一、文件操作基础
在C#中,文件操作主要通过`System.IO`命名空间中的类来实现,例如`File`、`FileStream`、`FileInfo`等。
二、常用文件操作方法
(一)文件读取
- **使用`File.ReadAllText`方法读取文件内容为字符串**
```
string content = File.ReadAllText("example.txt", Encoding.UTF8);
Console.WriteLine(content);
```
- **使用`File.ReadAllLines`方法读取文件内容为字符串数组**
```
string[] lines = File.ReadAllLines("example.txt", Encoding.UTF8);
foreach (string line in lines)
{
Console.WriteLine(line);
}
```
- **使用`FileStream`读取文件**
```
FileStream file = new FileStream("example.txt", FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[1024 * 1024 * 5]; // 每次读取5M的数据
int bytesRead = file.Read(buffer, 0, buffer.Length);
string str = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine(str);
file.Close();
file.Dispose();
```
(二)文件写入
- **使用`File.WriteAllText`方法创建或覆盖文件并写入文本**
```
string filePath = "example.txt";
string textToWrite = "Hello, World!";
File.WriteAllText(filePath, textToWrite, Encoding.UTF8);
```
- **使用`File.AppendAllText`方法追加文本到文件**
```
File.AppendAllText("example.txt", "追加的文本内容\n", Encoding.UTF8);
```
- **使用`FileStream`写入文件**
```
FileStream fileStream = File.Create("example.txt");
byte[] content = Encoding.UTF8.GetBytes("写入内容");
fileStream.Write(content, 0, content.Length);
fileStream.Close();
```
(三)文件创建
- **使用`File.Create`方法创建文件**
```
string filePath = @"c:\myFile.txt";
FileStream fileStream = File.Create(filePath);
fileStream.Close();
```
(四)文件复制
- **使用`File.Copy`方法复制文件**
```
string sourceFilePath = @"c:\myFile.txt";
string destinationFilePath = @"d:\myFile_copy.txt";
File.Copy(sourceFilePath, destinationFilePath);
```
(五)文件移动
- **使用`File.Move`方法移动文件**
```
string sourceFilePath = @"c:\myFile.txt";
string destinationFilePath = @"d:\myFile.txt";
File.Move(sourceFilePath, destinationFilePath);
```
(六)文件删除
- **使用`File.Delete`方法删除文件**
```
string filePath = @"d:\myFile.txt";
File.Delete(filePath);
```
(七)判断文件是否存在
- **使用`File.Exists`方法判断文件是否存在**
```
bool exists = File.Exists("example.txt");
Console.WriteLine(exists ? "文件存在" : "文件不存在");
```
三、`FileInfo`类
`FileInfo`类提供了对文件的高级操作功能,以下是一些示例:
(一)读取文件
```
FileInfo fileInfo = new FileInfo("example.txt");
if (fileInfo.Exists)
{
using (FileStream fs = fileInfo.OpenRead())
{
byte[] buffer = new byte[fs.Length];
int bytesRead = fs.Read(buffer, 0, buffer.Length);
Console.WriteLine($"读取了 {bytesRead} 字节的数据。");
}
}
else
{
Console.WriteLine("文件不存在。");
}
```
(二)复制文件
```
FileInfo sourceFile = new FileInfo("source.txt");
string destinationPath = "destination.txt";
if (sourceFile.Exists)
{
FileInfo copiedFile = sourceFile.CopyTo(destinationPath, false); // 不允许覆盖
Console.WriteLine($"文件已复制到: {copiedFile.FullName}");
}
else
{
Console.WriteLine("源文件不存在。");
}
```
四、注意事项
-
在进行文件操作时,需要注意文件的路径是否正确,以及是否有足够的权限访问文件。
-
使用`FileStream`等流操作文件时,记得在操作完成后关闭流并释放资源,可以使用`using`语句来自动管理资源。
-
在读取或写入文件时,要注意文件的编码格式,避免出现乱码问题。