C#基础知识之FileStream
什么是FileStream?
在C#中,FileStream是操作文件的一个类。通过FileStream,可以对一个文件进行读取、写入、修改等操作。在进行文件处理时,FileStream是一个非常重要的工具。
FileStream的基本用法
创建FileStream对象时,会需要传递文件的路径、文件打开方式等参数。常见的打开方式有:
- FileMode.Create:创建一个新文件。如果文件已经存在,就先清空原有内容
- FileMode.CreateNew:创建一个新文件。如果文件已经存在,会抛出异常
- FileMode.Open:打开一个已经存在的文件
- FileMode.OpenOrCreate:如果文件存在,就打开文件;如果文件不存在,就创建一个新文件。
创建FileStream对象示例:
FileStream fs = new FileStream("test.txt", FileMode.Create);
接下来可以通过FileStream对象调用Read()、Write()等方法进行操作,并最终使用Close()方法关闭文件流。
这样使用FileStream可能会存在文件打开后忘记关闭的问题,为了避免这种情况,可以使用using语句块。这样在代码执行完成后,会自动关闭FileStream对象。
使用using语句块示例:
using (FileStream fs = new FileStream("test.txt", FileMode.Create))
{
// Write操作
// ...
}
FileStream的读写操作
写操作
使用FileStream进行写操作时,会调用Write()方法。Write方法有多个不同参数的重载,最常用的是将字符串写入文件的方法。
使用Write方法进行字符串写入示例:
using (FileStream fs = new FileStream("test.txt", FileMode.Create))
{
string msg = "Hello, C# FileStream!";
byte[] buffer = Encoding.Default.GetBytes(msg);
fs.Write(buffer, 0, buffer.Length);
}
读操作
使用FileStream进行读操作时,会调用Read()方法。Read()方法有多个不同参数的重载,最常用的是读取文件所有字节的方法。
使用Read方法读取文件内容并输出示例:
using (FileStream fs = new FileStream("test.txt", FileMode.Open))
{
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
string msg = Encoding.Default.GetString(buffer);
Console.WriteLine(msg);
}
FileStream注意事项
- 在使用FileStream时,需要保证文件是可访问的
- 在写入操作时,需要注意文件是否存在。如果想要创建新文件,一定要使用Create或CreateNew方式
- 在结束一个操作时,一定要关闭文件流。这可以使用Close()方法,或者使用using语句块
示例
读取二进制文件内容并写入新文件
// 读取源文件内容
using (FileStream from = new FileStream("test.dat", FileMode.Open))
{
byte[] buffer = new byte[from.Length];
from.Read(buffer, 0, buffer.Length);
// 将内容写入新文件
using (FileStream to = new FileStream("test_copy.dat", FileMode.Create))
{
to.Write(buffer, 0, buffer.Length);
}
}
读取文件夹中的所有文件内容,并统计文件总字节数
// 声明文件夹路径
string directoryPath = @"D:\test_folder\";
// 获取文件夹中的所有文件
string[] files = Directory.GetFiles(directoryPath);
// 遍历所有文件,计算总字节数
int totalBytes = 0;
foreach(string file in files)
{
using (FileStream fs = new FileStream(file, FileMode.Open))
{
totalBytes += (int)fs.Length;
}
}
Console.WriteLine("The total bytes of all files is: " + totalBytes);
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#基础知识之FileStream - Python技术站