C#-IO读写


文件夹/文件 的创建和删除

// 创建一个文件夹
Directory.CreateDirectory(@"E:/Test");
// 删除指定文件夹(当前文件夹必须为空)
Directory.Delete(@"E:/Test");
// 删除指定文件夹(即使要删除的文件夹不为空,也会删除)
Directory.Delete(@"E:/Test", true);
// 获取文件夹下的文件
Directory.GetFiles(@"E:/Test");
// 获得文件夹下的文件夹
Directory.GetDirectories(@"E:/Test");
// 获得文件夹下的所有文件夹,包含子文件夹的文件夹
Directory.GetDirectories(@"E:/Test", "*.*", SearchOption.AllDirectories);
// 获得文件夹下的所有文件,包含子文件下的文件
Directory.GetFiles(@"E:/Test","*.*",SearchOption.AllDirectories);
// 创建文件
File.Create(@"E:/Test/Text.txt");
// 删除文件
File.Delete(@"E:/Test/Text.txt");
// 获取文件夹信息,当前文件夹的信息都保存在Info中
DirectoryInfo info = new DirectoryInfo(@"E:/Test");
// 获得文件信息,当前文件的信息都保存在file中
FileInfo file = new FileInfo(@"E:/Test/Text.txt");

字节数组和字符串之间的转换

string str = "Hello World";
// 将字符串转换成字节数组
byte[] byteList = System.Text.Encoding.UTF8.GetBytes(str);
// 将字节数组转换成字符串
string str2 = System.Text.Encoding.UTF8.GetString(byteList); 

文件的读写

方法一:注意需要手动将字节流断开

// 创建一个文件夹
Directory.CreateDirectory(@"E:/Test");
// 创建一个文本,并返回一个字节流方便将文本写入
FileStream fs = File.Create(@"E:/Test/Test.txt");
// 要写入的字符串
string str = "Hello World";
// 将字符串转换成计算机能够识别的字节数组
byte[] byteList = System.Text.Encoding.UTF8.GetBytes(str);
// 将字节数组写入字节流中(写入的字节流,从什么开始,到什么结束);
fs.Write(byteList,0,byteList.Length);
// 将字节流断开
fs.Close();

// 获得指定路径的文件流
FileStream fw = new FileStream(@"E:/Test/Test.txt",FileMode.OpenOrCreate);
// 创建一个数据缓冲区,用于存放从文件中获得的字节数据(必须要比读取的文件大,但不能太大浪费性能,酌情处理);
byte[] byteList2 = new byte[1024];
// 通过文件流进行读取
fw.Read(byteList2,0,byteList2.Length);
// 将字节数组转换成字符串
string str2 = System.Text.Encoding.UTF8.GetString(byteList2);

方法二:using执行完毕字节流将会自动断开,无需手动操作

// 创建一个文件夹
Directory.CreateDirectory(@"E:/Test");
// 创建一个文本,并返回一个字节流方便将文本写入
using (FileStream fs = File.Create(@"E:/Test/Test.txt")) {
    // 要写入的字符串
    string str = "Hello World";
    // 将字符串转换成计算机能够识别的字节数组
    byte[] byteList = System.Text.Encoding.UTF8.GetBytes(str);
    // 将字节数组写入字节流中(写入的字节流,从什么开始,到什么结束);
    fs.Write(byteList, 0, byteList.Length);
}

// 创建一个文件流用于已有文件中内容的追加
using (FileStream fs = new FileStream(@"E:/Test/Test.txt", FileMode.Append)) {
    // 要写入的字符串
    string str = "Hello World";
    // 将字符串转换成计算机能够识别的字节数组
    byte[] byteList = System.Text.Encoding.UTF8.GetBytes(str);
    // 将字节数组写入字节流中(写入的字节流,从什么开始,到什么结束);
    fs.Write(byteList, 0, byteList.Length);
}

// 获得指定路径的文件流
using (FileStream fw = new FileStream(@"E:/Test/Test.txt", FileMode.OpenOrCreate)) {
    // 创建一个数据缓冲区,用于存放从文件中获得的字节数据(必须要比读取的文件大,但不能太大浪费性能,酌情处理);
    byte[] byteList2 = new byte[1024];
    // 通过文件流进行读取
    fw.Read(byteList2, 0, byteList2.Length);
    // 将字节数组转换成字符串
    string str2 = System.Text.Encoding.UTF8.GetString(byteList2);                
}

方法三:不通过文件流直接向文件中写文本(直接对其原文本进行覆盖)

// 直接向文件中写文本
File.WriteAllText(@"E:/Test/Test.txt","AAAAAAAA");
// 将文本转换成字节数组并直接写入文件
string str3 = "BBBBB";
byte[] byteList3 = System.Text.Encoding.UTF8.GetBytes(str3);
File.WriteAllBytes(@"E:/Test/Test.txt",byteList3);

// 读取文件中的文本
File.ReadAllText(@"E:/Test/Test.txt");
// 通过字节流读取文件中的文本(有时文本中存储的不是字符串格式)
byte[]byteList4 = File.ReadAllBytes(@"E:/Test/Test.txt");

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/280399.html

(0)
上一篇 2022年8月14日
下一篇 2022年8月14日

相关推荐

发表回复

登录后才能评论