C# 程序将文本附加到现有文件
简介
附加意味着将信息添加到已编写的文档中。在这里,我们将学习编写一个 C# 程序来将文本附加到现有文件。众所周知,文件处理是在 C# 中完成的。在大多数情况下,文件用于存储数据。文件处理或文件管理通俗地说就是各种过程,例如创建文件、从中读取、写入、附加等等。
仅限于现有文件?
好吧,众所周知,附加通常意味着将一条信息添加到已编写的文档中。但是,如果我们尝试访问的文件是一个不存在的文件怎么办?假设我们正在搜索名为"madrid.txt"的文件以将其附加。如果该文件存在于指定目录中,则将附加该文件。但是,如果文件"madrid.txt"不存在怎么办?然后,程序会创建一个名为"madrid.txt"的新文件,您可以在其中添加信息。因此,当我们尝试以附加模式打开文件时,如果该特定文件不存在,则会创建一个新的空文件,其名称为我们要附加的文件。
1. File.AppendAllText(String, String) 方法
File.AppendAllText() 方法是解决附加到现有文件问题的一种非常常见的解决方案。此方法来自 File 类。此方法的语法如下。
public static void AppendAllText (string path, string? content);
在语法中,第一个字符串包含我们打算附加的文件的路径。之后,我们想要添加到文件的信息。这也可能引发一些异常。如果我们尝试访问文件的目录不存在,则会抛出 DriectoryNotFoundException。另一个主要抛出的异常是 UnauthorizedAccessException。当程序员尝试访问的文件是只读文件或指定的路径指向目录而不是文件时,就会发生这种情况。
无论抛出什么异常,使用此方法时文件句柄都将关闭。
算法
现在,我们将讨论创建程序以使用 File.AppendAllText() 将信息添加到文件的算法。
步骤 1 - 首先,我们创建一个字符串来存储要附加的文件的地址,然后提供文件的地址。
步骤 2 - 然后我们使用 FileAppendAllText() 以附加模式打开文件并将特定文本添加到文件。如果该文件不存在,则创建一个具有该名称的新文件并添加文本。
步骤 3 - 最后,从文件中读取文本,以便我们可以看到文件已附加,然后程序退出。
示例
// 附加文件的程序 using System; using System.IO; public class Program { public static void Main() { string loca = @"D:\madrid.txt"; // 将文本添加到 madrid.txt 文件 File.AppendAllText(loca, Environment.NewLine + "UCL"); // 从 madrid.txt 文件中读取文本 string txtappd = File.ReadAllText(loca); Console.WriteLine(txtappd); } }
输出
UCL
因此,提供文件的路径,然后此方法打开指定的文件,添加程序员所需的信息,然后关闭文件。 非常简单,但是如果我们想将整个内容从文件复制到我们想要的文件怎么办? 是的,这种方法还解决了我们的文件复制问题。 现在是讨论算法的时候了。
算法
此算法是关于使用 File.AppendAllText()。
步骤 1 - 创建一个字符串来存储源文件的地址。
步骤 2 - 创建另一个字符串来存储目标文件的地址。
步骤 3 - File.Readlines() 用于将源文件复制到字符串中。
步骤 4 - 文件以追加模式由 File.AppendAllText() 打开。然后添加文本。
步骤 5 - 完成后程序退出。
示例
// 附加文件的程序 using System; using System.Collections.Generic; using System.IO; public class Program { public static void Main() { string sttr1 = @"D:\trophies.txt"; string sttr2 = @"D:\madrid.txt"; // 将源文件中的所有文本复制到字符串中,然后添加到目标文件 IEnumerable<string> inform = File.ReadLines(sttr1); File.AppendAllLines(sttr2, inform); } }
现在让我们再看看另一种方法。
2. File.AppendText() 方法
SteamWriter 类是一个非常通用的类。它提供了许多用于写入文件的方法。WriteLine() 或 Write() 是可用于将文本添加到流的不同方法。
public static System.IO.StreamWriter AppendText (string path);
可以使用 File.AppendAllText() 方法创建 StreamWriter 实例,该方法以 UTF-8 编码将文本附加到现有文件。如果指定的文件不存在,它还会创建一个新文件。
如果我们尝试访问文件的目录不存在,则会抛出 DriectoryNotFoundException。另一个主要抛出的异常是 UnauthorizedAccessException。当程序员尝试访问的文件是只读文件或指定的路径指向目录而不是文件时,就会发生这种情况。
算法
现在,我们将讨论创建程序以使用 File.AppendText() 将信息添加到文件的算法。
步骤 1 - 首先,我们创建一个字符串来存储要附加的文件的地址,然后提供文件的地址。
步骤 2 - 现在,我们创建 StreamReader 的实例。此步骤以附加模式打开文件并将文本添加到文件。我们使用 File.AppendText() 添加文本。
StreamReader.Write() 方法用于附加。如果用户想要附加文本,然后在末尾添加行终止符。使用 StreamReader.WriteLine() 方法。
Step 3 - 程序完成后退出。
示例
// 追加文件的程序 using System; using System.IO; public class Program { public static void Main() { string loca = @"D:\madrid.txt"; // 将文本添加到指定文件 using (StreamWriter sw = File.AppendText(loca)) { sw.Write("UCL"); //use sw.WriteLine(If you want to add line termination) } // 从附加文件中读取文本 string txtappd = File.ReadAllText(loca); Console.WriteLine(txtappd); } }
输出
UCL
StreamWriter(String, Boolean) 构造函数重载版本也等同于 File.AppendText()。而对于布尔参数,我们使用 true。
StreanWriter(String, Boolean) 的算法
现在,我们将讨论创建程序以使用 StreamWriter(String, Boolean) 将信息添加到文件的算法。
步骤 1 − 首先,我们创建一个字符串来存储要附加的文件的地址,然后提供文件的地址
步骤 2 − 现在,我们创建一个 StreamReader 的实例。此步骤以追加模式打开文件并将文本添加到文件中。我们使用新的 Streamwriter() 添加信息。在这里,我们使用 StreamReader.Write() 方法进行追加。但如果我们需要追加文本然后在末尾添加行终止符,则可以使用 StreamReader.WriteLine() 方法。
步骤 3 − 最后,从文件中读取文本,以便我们可以看到文件已追加,然后程序退出。
示例
// 追加文件的程序 using System; using System.IO; public class Program { public static void Main() { string loca = @"D:\madrid.txt"; // 将文本添加到指定文件 using (StreamWriter sw = new StreamWriter(loca, true)) { sw.Write("UCL"); //use sw.WriteLine(If you want to add line termination) } // 从附加文件中读取文本 string txtappd = File.ReadAllText(loca); Console.WriteLine(txtappd); } }
输出
UCL
时间复杂度
由于在这两个过程中,我们都使用了文件处理。在第一个算法中,我们使用 File.AppendAllText(),在第二个算法中,我们使用 File.AppendText(),它们都只是附加文件。它们获取新文本并将其添加到文件末尾。因此,这两种方法的时间复杂度均为 O(1)。
结论
在本文中,我们讨论了将文本附加到现有文件的不同方法。首先,我们讨论了需求以及是否只能对现有文件执行此操作。然后,我们讨论了附加 File.AppendAllText() 和 File.AppendText() 的方法。最后,我们讨论了算法和算法的代码。
我们希望本文能帮助您增强对 C# 的了解。