C#使用FileStream对象读写文件
什么是FileStream对象?
FileStream对象是用于在Windows操作系统上读写文件的类。通过该对象,我们可以方便地读取文件或将数据写入文件。
读取文件
使用FileStream构造函数打开文件
使用FileStream读取文件,需要在代码中使用FileStream类,可以使用FileStream构造函数打开文件,并读取所需的文件数据。具体流程如下:
using System.IO;
FileStream fs = new FileStream("sample.txt", FileMode.OpenOrCreate);
以上代码打开当前目录下的sample.txt文件。使用FileMode.OpenOrCreate指定文件打开方式。可以使用其他选项,例如:
- FileMode.Create:若文件存在,则覆盖该文件;若文件不存在,则创建新文件。
- FileMode.CreateNew:若文件存在,则创建失败;若文件不存在,则创建新文件。
- FileMode.Open:若文件存在,则打开该文件;若文件不存在,则抛出异常FileNotFoundException。
- FileMode.OpenOrCreate:若文件存在,则打开该文件;若文件不存在,则创建新文件。
代码说明:
- fs:是一个FileStream实例,它被用于在后续的代码中对文件进行操作。
- "sample.txt":文件名。
- FileMode.OpenOrCreate:文件的打开方式。
使用FileStream.Read()读取文件数据
byte[] data = new byte[1024];
int bytesRead = fs.Read(data, 0, data.Length);
以上代码使用fs.Read()方法从文件读取数据。
代码说明:
- data:包含读取的数据。
- byte[1024]:读取的数据缓冲区大小。
- bytesRead:实际读取的字节数。
关闭FileStream对象
使用FileStream对象后,需要显式地关闭该对象,以释放被它所占用的资源。可以使用以下代码进行关闭:
fs.Close();
fs.Dispose();
代码说明:
- fs.Close():关闭FileStream对象。
- fs.Dispose():释放所占用的资源。
写入文件
使用FileStream构造函数打开文件
使用FileStream写入文件,可以使用同样的FileStream构造函数打开文件。具体流程如下:
using System.IO;
FileStream fs = new FileStream("sample.txt", FileMode.OpenOrCreate);
以上代码打开当前目录下的sample.txt文件。同样可以使用其他FileMode选项,例如:
- FileMode.Create:若文件存在,则覆盖该文件;若文件不存在,则创建新文件。
- FileMode.CreateNew:若文件存在,则创建失败;若文件不存在,则创建新文件。
- FileMode.Open:若文件存在,则打开该文件;若文件不存在,则抛出异常FileNotFoundException。
- FileMode.OpenOrCreate:若文件存在,则打开该文件;若文件不存在,则创建新文件。
代码说明:
- fs:是一个FileStream实例,它被用于在后续的代码中对文件进行操作。
- "sample.txt":文件名。
- FileMode.OpenOrCreate:文件的打开方式。
使用FileStream.Write()写入数据
byte[] data = Encoding.UTF8.GetBytes("Hello, World!");
fs.Write(data, 0, data.Length);
以上代码使用fs.Write()方法将数据写入文件。使用Encoding.UTF8.GetBytes()将字符串编码为字节。可以将任何字节流写入文件。
代码说明:
- data:要写入文件的数据。
- Encoding.UTF8.GetBytes("Hello, World!"):将字符串编码为byte[]类型。
- fs.Write():将数据写入文件。
关闭FileStream对象
使用FileStream对象后,需要显式地关闭该对象,以释放被它所占用的资源。可以使用以下代码进行关闭:
fs.Close();
fs.Dispose();
代码说明:
- fs.Close():关闭FileStream对象。
- fs.Dispose():释放所占用的资源。
示例
读取文件
using System;
using System.IO;
namespace FileStreamDemo
{
class Program
{
static void Main(string[] args)
{
try
{
using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate))
{
byte[] buffer = new byte[fileStream.Length];
int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
Console.WriteLine($"Read {bytesRead} bytes from file. Contents are:\n{Encoding.UTF8.GetString(buffer)}");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
}
}
以上代码向控制台输出读取到的文件内容。
代码说明:
- using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate)):使用using语句创建了一个FileStream对象(在“读取文件”中已经介绍过)。使用该方法可以确保对FileStream对象资源的正确释放。
- byte[] buffer = new byte[fileStream.Length]:创建一个byte[]类型的变量(buffer)来存储文件的数据,长度为文件长度。
- int bytesRead = fileStream.Read(buffer, 0, buffer.Length):从文件流中读取数据并存储到字节数组中,返回实际读取的字节数。
- Console.WriteLine($"Read {bytesRead} bytes from file. Contents are:\n{Encoding.UTF8.GetString(buffer)}"):将读取到的字节数、读取到的文件内容输出到控制台。
写入文件
using System;
using System.IO;
using System.Text;
namespace FileStreamDemo
{
class Program
{
static void Main(string[] args)
{
try
{
using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate))
{
string data = "Hello, World!";
byte[] buffer = Encoding.UTF8.GetBytes(data);
fileStream.Write(buffer, 0, buffer.Length);
Console.WriteLine("Data written to file.");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
}
}
以上代码向文件中写入数据,并将字符串“Data written to file.”输出到控制台。
代码说明:
- using (FileStream fileStream = new FileStream("sample.txt", FileMode.OpenOrCreate)):使用using语句创建了一个FileStream对象(在“写入文件”中已经介绍过)。使用该方法可以确保对FileStream对象资源的正确释放。
- string data = "Hello, World!":创建字符串类型的变量data,并赋值。
- byte[] buffer = Encoding.UTF8.GetBytes(data):使用Encoding.UTF8.GetBytes()方法将字符串编码为byte[]类型,存储到buffer中。
- fileStream.Write(buffer, 0, buffer.Length):使用fileStream.Write()方法将buffer的内容写入文件中。
- Console.WriteLine("Data written to file."):将字符串“Data written to file.”输出到控制台。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#使用FileStream对象读写文件 - Python技术站