C# 写入文本文件
最后修改于 2023 年 7 月 5 日
C# 写入文本文件演示了如何在 C# 中写入文本文件。C# 中的输入/输出操作基于流。流是所有流的抽象基类。
C# 中的输入/输出基于流。Stream 是所有流的抽象基类。流是字节序列的抽象,例如文件、输入/输出设备、进程间通信管道或 TCP/IP 套接字。
C# 流
Stream 提供了一个通用的输入和输出类型接口,并将程序员与操作系统和底层设备的具体细节隔离开来。例如,MemoryStream 处理位于内存中的数据,而 FileStream 处理文件中的数据。
C# 使用 File.WriteAllText 写入文本文件
File.WriteAllText 方法创建一个新文件,将内容写入该文件,然后关闭该文件。如果目标文件已经存在,则会被覆盖。
var path = "data.txt";
string text = "old falcon";
File.WriteAllText(path, text);
Console.WriteLine("text written");
此示例将文本写入文件。
File.WriteAllText(path, text);
File.WriteAllText 方法接受两个参数:要写入的文件和要写入文件的字符串。该方法接受一个可选的第三个参数:编码。如果未指定,则设置为 UTF8。
C# 使用 File.WriteAllLines 写入文本
File.WriteAllLines 方法创建一个新文件,将一个或多个字符串写入该文件,然后关闭该文件。
var path = "data.txt";
string[] lines = {"old falcon", "deep forest", "golden ring"};
File.WriteAllLines(path, lines);
Console.WriteLine("lines written to file");
此示例将三行写入文件。
string[] lines = {"old falcon", "deep forest", "golden ring"};
这是一个包含三行的字符串数组。
File.WriteAllLines(path, lines);
使用 File.WriteAllLines 方法将这些行写入文件。
C# 使用 File.WriteAllBytes 写入文本
File.WriteAllBytes 方法创建一个新文件,将指定的字节数组写入该文件,然后关闭该文件。如果目标文件已经存在,则会被覆盖。
using System.Text;
var path = "data.txt";
string text = "Today is a beautiful day. We go swimming and fishing.";
byte[] data = Encoding.ASCII.GetBytes(text);
File.WriteAllBytes(path, data);
Console.WriteLine("data written to file");
此示例使用 File.WriteAllBytes 方法将文本写入文本文件。
string text = "Today is a beautiful day. We go swimming and fishing."; byte[] data = Encoding.ASCII.GetBytes(text);
首先,我们使用 Encoding.ASCII.GetBytes 方法将文本转换为字节。
File.WriteAllBytes(path, data);
然后,使用 File.WriteAllBytes 方法将字节数组写入文件。
C# 使用 StreamWriter 的 WriteLine 写入文本
StreamWriter 的 WriteLine 方法将格式化的字符串和新行写入流。
var path = "data.txt";
using var sw = new StreamWriter(path);
sw.WriteLine("old falcon");
Console.WriteLine("data written to file");
此示例将一行写入文本文件。
using var sw = new StreamWriter(path);
sw.WriteLine("old falcon");
将一行写入文本文件。 我们使用 using 关键字在 sw 变量超出范围时自动释放文件资源。
C# 使用 FileStream 的 write 写入文本
FileStream 的 write 方法将字节块写入文件流。
public override void Write(byte[] array, int offset, int count);
第一个参数是包含要写入流的数据的缓冲区。 第二个参数是数组中从零开始的字节偏移量,从此偏移量开始将字节复制到流。 第三个参数是要写入的最大字节数。
using System.Text;
var path = "data.txt";
using FileStream fs = File.OpenWrite(path);
var data = "falcon\nhawk\nforest\ncloud\nsky";
byte[] bytes = Encoding.UTF8.GetBytes(data);
fs.Write(bytes, 0, bytes.Length);
Console.WriteLine("data written to file");
此示例将文本数据写入文本文件。
using FileStream fs = File.OpenWrite(path);
首先,我们使用 File.OpenWrite 方法打开一个文件流。
var data = "falcon\nhawk\nforest\ncloud\nsky"; byte[] bytes = Encoding.UTF8.GetBytes(data);
然后,我们使用 Encoding.UTF8.GetBytes 方法将文本数据转换为字节。
fs.Write(bytes, 0, bytes.Length);
最后,我们将字节数组写入文件流。
C# 异步写入文本
在前面的示例中,我们已经同步写入了文本数据。 C# 还提供了等效的异步方法。
File.WriteAllTextAsync 异步创建一个新文件,将指定的字符串写入该文件,然后关闭该文件。 如果目标文件已经存在,则会被覆盖。
var path = "data.txt";
string text = "an old falcon";
await File.WriteAllTextAsync(path, text);
Console.WriteLine("text written");
在该示例中,我们异步写入文本文件。
await File.WriteAllTextAsync(path, text);
await 运算符应用于异步方法中的任务,以暂停方法的执行,直到等待的任务完成。
来源
在本文中,我们已经介绍了在 C# 中以各种方式写入文本文件的方法。
作者
列出所有 C# 教程。