将文本附加到现有文件的 C# 程序

将文本附加到现有文件的 c# 程序

简介

追加是指在已经写好的文档中添加信息。在这里,我们将学习编写一个 C# 程序将文本附加到现有文件中。众所周知,文件处理是在 C# 中完成的。大多数情况下,文件用于存储数据。通俗地说,文件处理或文件管理是各种过程,例如创建文件、读取文件、写入文件、附加文件等等。

仅适用于现有文件?

众所周知,附加通常意味着在已经编写的文档中添加一条信息。但是如果我们尝试访问的文件不存在怎么办?假设我们正在搜索一个名为“madrid.txt”的文件来附加它。如果指定目录中存在该文件,则附加该文件。但是如果文件“madrid.txt”不存在怎么办?然后,程序会创建一个名为“madrid.txt”的新文件,您可以在其中添加信息。因此,当我们尝试以追加模式打开文件时,如果该特定文件不存在,则会创建一个新的空文件,其名称与我们要追加的文件的名称相同。

1。 File.AppendAllText(String, String) 方法

File.AppendAllText() 方法是解决追加到现有文件问题的一种非常常见的解决方案。该方法来自 File 类。该方法的语法如下。

public static void AppendAllText (string path, string? contents); 

在语法中,第一个字符串包含我们要附加的文件的路径。之后,我们要添加到文件中的信息如下。这也可能引发一些异常。如果我们尝试访问该文件的目录不存在,则会抛出 DriectoryNotFoundException。另一个主要抛出的异常是 UnauthorizedAccessException。当程序员尝试访问的文件是只读文件或指定的路径指向目录而不是文件时,就会发生这种情况。

使用此方法时,无论抛出异常,文件句柄都将关闭。

算法

现在,我们将讨论创建一个程序以使用 File.AppendAllText() 将信息添加到文件的算法。

第 1 步 – 首先,我们创建一个字符串来存储要附加的文件的地址,然后提供文件的地址。

步骤 2 – 然后我们使用 FileAppendAllText() 以追加模式打开文件并将特定文本添加到文件中。如果该文件不存在,则会使用该名称创建一个新文件并添加文本。

步骤 3 – 最后,从文件中读取文本,以便我们可以看到文件已附加,然后程序退出。

示例

// A program to append the fileusing System;using System.IO;public class Program {   public static void Main() {      string loca = @"D:madrid.txt";      // Adding the text to the madrid.txt file      File.AppendAllText(loca, Environment.NewLine + "UCL");      // Reading the text from the madrid.txt file      string txtappd = File.ReadAllText(loca);      Console.WriteLine(txtappd);   }}

输出

UCL

因此,提供了文件的路径,然后该方法打开指定的文件,添加程序员想要的信息,然后关闭该文件。很简单,但是如果我们想将一个文件的全部内容复制到我们想要的文件中怎么办?是的,这个方法也解决了我们复制文件的问题。现在是讨论算法的时候了。

算法

该算法是关于使用 File.AppendAllText() 的。

第 1 步 – 创建一个用于存储源文件地址的字符串。

步骤 2 – 创建另一个字符串来存储目标文件的地址。

步骤 3 – File.Readlines() 用于复制字符串中的源文件。

步骤 4 – 文件由 File.AppendAllText() 以附加模式打开。然后添加文本。

步骤 5 – 程序完成后退出。

示例

// A program to append the fileusing 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";      // Copying all the text from the source file in a string and then adding to the destination file      IEnumerable 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() 方法。

步骤 3 – 程序完成后退出。

示例

// A program to append the fileusing System;using System.IO;public class Program {   public static void Main() {      string loca = @"D:madrid.txt";      // Adding the text to the specified file      using (StreamWriter sw = File.AppendText(loca)) {         sw.Write("UCL"); //use sw.WriteLine(If you want to add line termination)      }      // Read the text from the appended file      string txtappd = File.ReadAllText(loca);      Console.WriteLine(txtappd);   }}

输出

UCL

StreamWriter(String, Boolean) 构造函数重载版本也相当于 File.AppendText()。而对于布尔参数,我们使用 true。

StreanWriter 算法(字符串、布尔值)

现在,我们将讨论创建一个程序以使用 StreamWriter(String, Boolean) 将信息添加到文件的算法。

第 1 步 – 首先,我们创建一个字符串来存储要附加的文件的地址,然后提供文件的地址

第 2 步− 现在,我们创建 StreamReader 的实例。此步骤以追加模式打开文件并向文件添加文本。我们使用新的 Streamwriter() 来添加信息。在这里,我们使用 StreamReader.Write() 方法进行追加。但如果我们需要附加文本,然后在末尾添加行终止符,那么我们可以使用 StreamReader.WriteLine() 方法。

第 3 步− 最后,从文件中读取文本,以便我们可以看到文件已附加,然后程序退出。

示例

// A program to append the fileusing System;using System.IO;public class Program {   public static void Main() {      string loca = @"D:madrid.txt";      // Adding the text to the specified file      using (StreamWriter sw = new StreamWriter(loca, true)) {         sw.Write("UCL"); //use sw.WriteLine(If you want to add line termination)      }      // Read the text from the appended file      string txtappd = File.ReadAllText(loca);      Console.WriteLine(txtappd);   } }

输出

UCL

时间复杂度

由于在这两个进程中,我们都使用文件处理。在第一个算法中,我们使用 File.AppendAllText(),在第二个算法中,我们使用 File.AppendText(),它们都只是附加文件。他们正在获取新文本并将其添加到文件末尾。所以,这两种方法的时间复杂度都是O(1)。

结论

在本文中,我们讨论了将文本附加到现有文件的不同方法。首先我们讨论了是否需要以及是否只能对现有文件进行。然后我们讨论了追加File.AppendAllText()和File.AppendText()的方法。最后,我们讨论了算法和算法的代码。

我们希望本文能够帮助您增强有关 C# 的知识。

以上就是将文本附加到现有文件的 C# 程序的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1435507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简要概述 C# 和 .NET 生态系统
上一篇 2025年12月17日 11:11:35
如何在 C# 中将多个空格替换为单个空格?
下一篇 2025年12月17日 11:11:54

相关推荐

  • 键值组件动态追加按钮失效如何解决?

    键值组件动态追加按钮失效解决方法 使用键值组件(Fieldlist)动态渲染的表格中,追加按钮点击后不响应,如何解决? 解决方法: 文档中提供的解决方案可能无效,因为该组件需要绑定事件并追加新元素才能正常工作。 以下是一个演示如何绑定点击事件并追加新元素的代码示例: ID Chinese name …

    2025年12月22日
    000
  • CSS 行框高度为什么不为0?

    css行框高度的解释 给定以下代码: text 我们可能会认为由于span的line-height设置为0,因此其行框的高度为0,从而导致div的高度也为0。然而,实际结果却并非如此,div的高度为27,这该如何解释呢? 行框是由内部的行内框组成的。在此例中,span会生成一个行内框,其高度为lin…

    2025年12月22日
    000
  • 如何让 CSS 容器始终位于底部?

    如何让 css 容器始终位于底部? 在 CSS 中,使元素始终位于底部的常用方法是使用 margin-top: auto; 属性。这个属性将元素的垂直边距设置为剩余可用高度中的最大值,从而使元素被推到其父容器的底部。 考虑以下示例: … .outerDiv { display: flex; fl…

    2025年12月22日
    000
  • 轮播图最后一页切换回第一页时出现闪动,如何解决?

    轮播循环切换闪动原因及解决 轮播图最后一页切换回第一页时出现闪动,原因如下: 当使用 translate3d 方式切换时,CSS 样式没有及时更新。解决这个问题的方法是修改 changeCur 方法: changeCur(add) { this.con.style.transitionDuratio…

    2025年12月22日
    000
  • 在浏览器调试时如何保持元素的点击事件?

    在浏览器调试时如何保持元素的点击事件? 在浏览器开发调试时,打开F12元素审查工具后,某些元素的点击事件可能会失效,这给调试带来不便。 解决方案: 可以尝试以下方法来保持元素的点击事件: 使用页面加载中断点:在源代码中设置一个页面加载中断点,当页面加载到特定位置时,暂停执行。这可以让你在点击元素之前…

    2025年12月22日
    000
  • 动态渲染的键值组件中,如何解决追加按钮点击无反应的问题?

    键值组件(fieldlist)在使用 js 动态渲染后,追加按钮可能会出现点击无反应的问题。解决方法如下: 演示如何绑定点击事件并追加新元素 … Append $(document).ready(function() { $(document).on(‘click’, ‘.btn-append’…

    2025年12月22日
    000
  • 子元素含有多行文字,如何实现垂直居中?

    如何在子元素含有多行文字的情况下实现垂直居中? 在 HTML/CSS 中,要使子元素在包含多行文字的情况下垂直居中,可以使用 align-items: center; 属性和 word-break: break-all; 属性。 解决步骤: 使用 align-items: center; 属性将子元…

    2025年12月22日
    000
  • 如何无需全局变量,直接调用 Vite 打包的 UMD 方法?

    如何无需全局变量,直接调用 vite 打包的 umd 方法 在 Vite 打包生成 umd.js 文件后,如果希望在 HTML 中直接调用暴露的方法,除了将其挂载到 window 全局对象上之外,其实还有一个技巧。 这个技巧就是利用模块加载器。由于 UMD 规范支持采用模块加载器,因此,我们可以将 …

    2025年12月22日
    000
  • 如何使用Vite打包的UMD文件中的方法?

    在html中直接调用vite打包的umd方法 在HTML中使用打包好的UMD文件时,若需要直接调用其中暴露的方法,可以考虑以下解决办法: 打包过程中通常采用将方法挂载到window对象的方式对外暴露,由此可以在HTML中轻松使用这些方法。具体步骤如下: 使用Vite打包UMD文件,确保将暴露的方法挂…

    2025年12月22日
    100
  • 如何使用Canvas API实现图片曲线拉伸排列布局?

    图片曲线拉伸布局 想要实现图片按曲线拉伸并进行排列布局,可以使用多种方法,本文将提供两种方案。 方法一:CSS3 利用CSS3的transform属性中的rotateY参数,可以实现图片的倾斜效果。但如题主所述,直接使用rotateY无法达到理想的曲线效果,且中间行的处理也不方便。 方法二:Canv…

    2025年12月22日
    000
  • 如何让父元素内的子元素自动排列成两行?

    如何让父元素内的子元素两行排列 前言 在网页设计中,经常需要将多个子元素排列在父元素内。有时候,我们希望子元素可以根据可用空间自动排列成两行或更多行。本文将介绍如何使用 HTML、CSS 和 JavaScript 实现此效果。 实现步骤 1. HTML 结构 首先,创建一个父元素(DIV)作为容器,…

    2025年12月22日
    000
  • Form-data 数据传输中的 boundary 是由浏览器自动设置的吗?

    form-data 数据传输中的 boundary 在发送 form-data 类型数据时,boundary 是一种分隔符,用于将不同的数据字段分隔开。那么,boundary 是由浏览器自动设置的吗? 回答: 是的,在大多数情况下,浏览器会自动生成 boundary,无需手动设置。它作为 Conte…

    2025年12月22日
    000
  • 如何在HTML中直接调用Vite打包的UMD文件暴露的方法?

    在html中直接引用vite打包的umd文件暴露方法 当打包成UMD文件时,暴露的方法通常会挂载到全局对象(通常是window)上。因此,要直接在HTML中调用暴露的方法,需要这样做: 挂载到Window 打包好的UMD文件会导出一个对象,其中包含已暴露的方法,例如: import { initEd…

    2025年12月22日
    000
  • 如何用 HTML 和 CSS 实现图片曲线拉伸排列布局?

    如何使用 html 和 css 实现图片曲线拉伸并排列布局? 想要实现图片按曲线拉伸并排列的效果,可以利用 CSS3 中的 transform 属性来实现。 曲线拉伸 对于曲线拉伸,可以使用 transform: rotateY() 属性来实现。该属性可以将元素围绕 Y 轴进行旋转,从而产生曲线效果…

    2025年12月22日
    000
  • 如何让弹性盒子布局中最后的两个项目靠右对齐?

    弹性盒子布局中项目的对齐方式 弹性盒子布局中,可以通过 justify-content 和 align-content 属性来控制子元素(flex 项目)的对齐方式。 调整 width 属性对齐方式的影响 在示例代码中,设置 width=1000px 时,最后一个项目会被推到下一行,这是因为 jus…

    2025年12月22日
    000
  • 发送form-data数据时,boundary是浏览器自动设置还是需要手动指定?

    发送form-data数据时,boundary的设定 在发送form-data数据时,boundary是用来分隔不同表单字段的特殊字符串。许多开发人员想知道,boundary是由浏览器自动设置的还是需要手动指定。 浏览器自动设置boundary 是的,浏览器会自动设置boundary,无需手动设置。…

    2025年12月22日
    100
  • 如何用 HTML 和 CSS 实现图像曲线拉伸排列布局?

    图像曲线拉伸排列布局 本篇问答针对以下问题进行解惑:如何在 HTML 和 CSS 中实现图像按曲线拉伸并排列布局? 提问者在网上已搜索了 CSS3 中的 transform 属性,但无法写出平滑的曲线或处理中间行。他们还提出了使用 canvas 的可能性。 对此,提供的答案表明,可以使用 canva…

    2025年12月22日
    000
  • 如何将文本末尾的数字或图标居中显示?

    让文本末尾的数字或图标居中显示 在網頁中,需要將數字或圖示顯示在文本末尾,並在字體較小時保持居中。以下是如何使用 CSS 實現: 查看範例程式碼: span::after { content: “666”; font-size: 12px; vertical-align: middle; displ…

    2025年12月22日
    000
  • 如何利用 Canvas API 弯曲拉伸图片?

    利用 canvas api 弯曲拉伸图片 如何利用 HTML 和 CSS 呈现上面所示的效果? HTML 和 CSS 实现 此效果不易用纯粹的 HTML 和 CSS 实现。CSS3 中的 transform 属性虽可用于旋转元素,但无法实现丝滑的弯曲效果,且无法处理中间行。 Canvas API 实…

    2025年12月22日
    100
  • 如何通过 JavaScript 代码实现将 JSON 对象中特定键值替换为指定颜色?

    将特定键值替换为指定颜色的技巧 在前端开发中,有时需要将对象中特定键的值替换为指定颜色。以下是通过 JavaScript 实现这一目标的方法: 假设有这样的 JSON 对象: { “assessingOfficer”: [ { “AssessingOfficerName”: “卡特琳娜”, “Ass…

    用户投稿 2025年12月22日
    000

发表回复

登录后才能评论
关注微信