buffer.Length); Console.WriteLine(str); Console.ReadKey();

时间:2022-06-06 08:27:49

1.FIle类、Path类、Directory类温习
操纵文件的
File 操纵文件,静态类,对文件整体操纵。拷贝、删除、剪切等。
Directory 操纵目录(文件夹),静态类。
Path 对文件或目录的路径进行操纵(很便利)[字符串]
Strean 文件流,抽象类。

Path 操纵文件路径
File 操纵文件
复制、剪切、创建、移除
//File.Create(@"C:\Users\SJD\Desktop\new.txt");
//Console.WriteLine("创建告成");
//Console.ReadKey();

//File.Delete(@"C:\Users\SJD\Desktop\new.txt");
//Console.WriteLine("删除告成");
//Console.ReadKey();

//File.Move(@"C:\Users\SJD\Desktop\new.txt", @"C:\Users\SJD\Desktop\1.txt");
//Console.WriteLine("剪切告成");
//Console.ReadKey();

使用File类来读取数据(读取小文件,因为是一次性读取,大文件用文件流来读取)

File的三个读取的要领

1. 以字节数组的形式读取
byte[] buffer = File.ReadAllBytes(@"C:\Users\SJD\Desktop\123.txt");
string str = Encoding.Default.GetString(buffer, 0, buffer.Length);
Console.WriteLine(str);
Console.ReadKey();

2.以字符串数组的形式读取,用在操纵每行数据上
string[]str= File.ReadAllLines(@"C:\Users\SJD\Desktop\123.txt",Encoding.Default);
for (int i = 0; i < str.Length; i++)
{
Console.WriteLine(str[i]);
}
Console.ReadKey();

3.以字符串的形式读取,只用于看一下,不做任何操纵
string str = File.ReadAllText(@"C:\Users\SJD\Desktop\123.txt", Encoding.Default);
Console.WriteLine(str);
Console.ReadKey();

File的三个写入的要领

1. 以字节数组的形式写入,会笼罩本来的内容
string str = "今天天气好晴朗,随处好风景";
byte[] buffer = Encoding.Default.GetBytes(str);
File.WriteAllBytes(@"C:\Users\SJD\Desktop\1.txt", buffer);
Console.WriteLine("写入告成");
Console.ReadKey();

2.以字符串数组的形式写入一行一行
File.WriteAllLines(@"C:\Users\SJD\Desktop\1.txt", new string[] { "今天天气好晴朗,随处好风景" });
Console.WriteLine("写入告成");
Console.ReadKey();

3.以字符串的形式直接写入
string str = "今天天气好晴朗,,随处好风景";
File.WriteAllText(@"C:\Users\SJD\Desktop\1.txt", str);
Console.WriteLine("写入告成");
Console.ReadKey();

4.追加不笼罩,前面加上Append,有AppendAllLines和AppendAllText两种
File.AppendAllText(@"C:\Users\SJD\Desktop\1.txt", "必定没有笼罩");
Console.WriteLine("追加告成");
Console.ReadKey();

Directory类
1.创建指定路径的文件夹
Directory.CreateDirectory(@"C:\Users\SJD\Desktop\新建文件夹");
Console.WriteLine("创建告成");
Console.ReadKey();

2.删除指定路径的文件夹,文件夹目录不是空的就不能删,非要删除,后面加个true
Directory.Delete(@"C:\Users\SJD\Desktop\新建文件夹",true);
Console.WriteLine("删除告成");
Console.ReadKey();

3.没有copy这个要领,但有move(剪切)
Directory.Move(@"C:\Users\SJD\Desktop\123", @"C:\Users\SJD\Desktop\456");
Console.WriteLine("OK");
Console.ReadKey();

4.Directory.GetFiles 获取你指定的文件夹下文件的全路径,后面加上*.格局,可以只读取选择的格局文件路径
string[] path = Directory.GetFiles(@"C:\Users\SJD\Desktop\456", "*.jpg");
for (int i = 0; i < path.Length; i++)
{
Console.WriteLine(path[i]);
}
Console.ReadKey();

2、文件流
两个洪流缸,把一个缸中的水倒入另一个水缸。两种方法
.直接把一个缸中的水倒入另一个缸中。 file类
.用一个桶来把一个缸中的水舀到另一个缸中。 文件流
需要创建东西

FileStream 操纵字节的
StreamReader StreamWriter 操纵字符的
垃圾回收器不会帮我们自动回收占用的资源,必需要手动的close和dispose
但代码一多总忘记加这两个,所以我们把它写在using里面,让他自动的辅佐我们释放

FileStream fsRead 读
using (FileStream fsRead=new FileStream(@"C:\Users\SJD\Desktop\123.txt",FileMode.OpenOrCreate,FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
//暗示本次读取实际读取到的有效字节数
int r= fsRead.Read(buffer, 0, buffer.Length);
string s= Encoding.Default.GetString(buffer, 0, r);
Console.WriteLine(s);
}
Console.ReadKey();

FileStream fsWrite 追加写入
using (FileStream fsWrite=new FileStream(@"C:\Users\SJD\Desktop\234.txt",FileMode.OpenOrCreate,FileAccess.Write))
{
string str = "今天天气好晴朗";
byte[] buffer = Encoding.Default.GetBytes(str);
fsWrite.Write(buffer, 0, buffer.Length);
Console.WriteLine("写入告成");
}
Console.ReadKey();

StreamReader
using (FileStream fsRead=new FileStream(@"C:\Users\SJD\Desktop\123.txt",FileMode.OpenOrCreate,FileAccess.Read))
{
using (StreamReader sr = new StreamReader(fsRead,Encoding.Default))
{
while(!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
}
}
Console.ReadKey();