当前位置: 首页 > news >正文

C#零基础入门篇(18. 文件操作指南)

## 一、文件操作基础

在C#中,文件操作主要通过`System.IO`命名空间中的类来实现,例如`File`、`FileStream`、`FileInfo`等。

## 二、常用文件操作方法

### (一)文件读取

1. **使用`File.ReadAllText`方法读取文件内容为字符串**
    ```
    string content = File.ReadAllText("example.txt", Encoding.UTF8);
    Console.WriteLine(content);
    ```
2. **使用`File.ReadAllLines`方法读取文件内容为字符串数组**
    ```
    string[] lines = File.ReadAllLines("example.txt", Encoding.UTF8);
    foreach (string line in lines)
    {
        Console.WriteLine(line);
    }
    ```
3. **使用`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();
    ```

### (二)文件写入

1. **使用`File.WriteAllText`方法创建或覆盖文件并写入文本**
    ```
    string filePath = "example.txt";
    string textToWrite = "Hello, World!";
    File.WriteAllText(filePath, textToWrite, Encoding.UTF8);
    ```
2. **使用`File.AppendAllText`方法追加文本到文件**
    ```
    File.AppendAllText("example.txt", "追加的文本内容\n", Encoding.UTF8);
    ```
3. **使用`FileStream`写入文件**
    ```
    FileStream fileStream = File.Create("example.txt");
    byte[] content = Encoding.UTF8.GetBytes("写入内容");
    fileStream.Write(content, 0, content.Length);
    fileStream.Close();
    ```

### (三)文件创建

1. **使用`File.Create`方法创建文件**
    ```
    string filePath = @"c:\myFile.txt";
    FileStream fileStream = File.Create(filePath);
    fileStream.Close();
    ```

### (四)文件复制

1. **使用`File.Copy`方法复制文件**
    ```
    string sourceFilePath = @"c:\myFile.txt";
    string destinationFilePath = @"d:\myFile_copy.txt";
    File.Copy(sourceFilePath, destinationFilePath);
    ```

### (五)文件移动

1. **使用`File.Move`方法移动文件**
    ```
    string sourceFilePath = @"c:\myFile.txt";
    string destinationFilePath = @"d:\myFile.txt";
    File.Move(sourceFilePath, destinationFilePath);
    ```

### (六)文件删除

1. **使用`File.Delete`方法删除文件**
    ```
    string filePath = @"d:\myFile.txt";
    File.Delete(filePath);
    ```

### (七)判断文件是否存在

1. **使用`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("源文件不存在。");
}
```

## 四、注意事项

1. 在进行文件操作时,需要注意文件的路径是否正确,以及是否有足够的权限访问文件。
2. 使用`FileStream`等流操作文件时,记得在操作完成后关闭流并释放资源,可以使用`using`语句来自动管理资源。
3. 在读取或写入文件时,要注意文件的编码格式,避免出现乱码问题。

相关文章:

  • Transformer:GPT背后的造脑工程全解析(含手搓过程)
  • 《量子门与AI神经元:计算世界的奇妙碰撞》
  • 基于云漂移优化(Cloud Drift Optimization,CDO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码
  • 《量子比特:AI复杂算法破局的关键力量》
  • Leetcode 3489. Zero Array Transformation IV
  • MinGW下编译nginx源码
  • SpringBoot实现接口重试方案
  • mac电脑如何将wps接入deepseek (傻瓜式教学)
  • 阿里云CEN创建实验
  • RTSP/Onvif安防视频EasyNVR平台 vs.多协议接入视频汇聚EasyCVR平台:设备分组的区别
  • Qt画动态环形或饼状图接口程序
  • langchain整合数据库
  • 深入理解 Java 线程池
  • CSS 盒模型
  • 宇数科技激光雷达L2
  • 设计模式-单一职责
  • 最新!Ubuntu Docker 安装教程
  • 11 Collection集合、Map集合:分类、功能、遍历、底层原理,Stream流:获取、中间方法、终结方法 (黑马Java视频笔记)
  • 电信大带宽服务器的应用场景都有哪些?
  • 21.多态
  • 直击谷歌I/O 2025:谷歌AI眼镜剑指主流市场,未来拍电影全靠“打字”?
  • 上海市政府党组赴全面从严治党警示教育基地参观学习,推进作风建设走深走实
  • 凤阳文旅局长回应鼓楼瓦片脱落:楼宇是否属于文物?施工经费用在何处?
  • 最高法:政府信息公开案件审理应避免泄露国家秘密、商业秘密
  • 自然资源部:适应存量时代城市更新发展,严控增量盘活存量
  • 63岁微波遥感领域著名专家李春升参加学术会议期间病逝