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

一、文件操作基础

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

二、常用文件操作方法

(一)文件读取

  1. **使用`File.ReadAllText`方法读取文件内容为字符串**

```

string content = File.ReadAllText("example.txt", Encoding.UTF8);

Console.WriteLine(content);

```

  1. **使用`File.ReadAllLines`方法读取文件内容为字符串数组**

```

string[] lines = File.ReadAllLines("example.txt", Encoding.UTF8);

foreach (string line in lines)

{

Console.WriteLine(line);

}

```

  1. **使用`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);

```

  1. **使用`File.AppendAllText`方法追加文本到文件**

```

File.AppendAllText("example.txt", "追加的文本内容\n", Encoding.UTF8);

```

  1. **使用`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. 在读取或写入文件时,要注意文件的编码格式,避免出现乱码问题。

相关推荐
_r0bin_8 分钟前
前端面试准备-7
开发语言·前端·javascript·fetch·跨域·class
zhang98800009 分钟前
JavaScript 核心原理深度解析-不停留于表面的VUE等的使用!
开发语言·javascript·vue.js
Fanxt_Ja2 小时前
【JVM】三色标记法原理
java·开发语言·jvm·算法
蓝婷儿2 小时前
6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器
开发语言·python·学习
绿荫阿广2 小时前
互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(五):使用.NET为树莓派开发Wifi配网功能
c#·.net
love530love2 小时前
【笔记】在 MSYS2(MINGW64)中正确安装 Rust
运维·开发语言·人工智能·windows·笔记·python·rust
slandarer3 小时前
MATLAB | 绘图复刻(十九)| 轻松拿捏 Nature Communications 绘图
开发语言·matlab
狐凄3 小时前
Python实例题:Python计算二元二次方程组
开发语言·python
roman_日积跬步-终至千里3 小时前
【Go语言基础【3】】变量、常量、值类型与引用类型
开发语言·算法·golang
roman_日积跬步-终至千里3 小时前
【Go语言基础】基本语法
开发语言·golang·xcode