【.Net实用方法总结】 整理并总结System.IO中TextWriter类及其方法介绍

🐋作者简介:博主是一位.Net开发者,同时也是RPA和低代码平台的践行者。
🐬个人主页:会敲键盘的肘子
🐰系列专栏:.Net实用方法总结
🦀专栏简介:博主针对.Net开发和C站问答过程中遇到的问题进行总结,形成本专栏,希望可以帮助到您解决问题。
🐶座右铭:总有一天你所坚持的会反过来拥抱你。


在这里插入图片描述

🌈写在前面:

本文主要介绍System.IO命名空间的TextWriter 类,介绍其常用的方法和示例说明。


👉本文关键字:System.IO、TextWriter类、方法示例、C#

1️⃣ System.IO命名空间

.NET中的IO操作命名空间,包含允许读写文件数据流的类型以及提供基本文件和目录支持的类型。

我们在.NET中的IO操作,经常需要调用一下几个类。

  • FileStream类

​ 文件流类,负责大文件的拷贝,读写。

  • Path类

​ Path类中方法,基本都是对字符串(文件名)的操作,与实际文件没多大关系。

  • File类

    File类可以进行一些对小文件拷贝、剪切操作,还能读一些文档文件。

  • Dirctory类

    目录操作,创建文件、删除目录,获取目录下文件名等等。

2️⃣ TextWriter类

♈ 定义

表示可以编写一个有序字符系列的编写器。 此类为抽象类。

public abstract class TextWriter : MarshalByRefObject, IAsyncDisposable, IDisposable

示例

类是一个抽象类。 因此,不会在代码中实例化它。 该 StreamWriter 类派生自 TextWriter 成员的实现,用于写入流。 以下示例演示如何使用 WriteLineAsync(String) 该方法将字符串值组成的两行写入文本文件。

using System.IO;

namespace ConsoleApplication
{
    class Program4
    {
        static void Main()
        {
            WriteCharacters();
        }

        static async void WriteCharacters()
        {
            using (StreamWriter writer = File.CreateText("newfile.txt"))
            {
                await writer.WriteLineAsync("First line of example");
                await writer.WriteLineAsync("and second line");
            }
        }
    }
}

此类型实现 IDisposable 接口。 使用从此类型派生的任何类型后,应直接或间接释放它。 若要直接释放类型,请在 try/catch 块中调用其 Dispose 方法。 若要间接释放类型,请使用 using(在 C# 中)或 Using(在 Visual Basic 中)等语言构造。 有关详细信息,请参阅接口主题中的 IDisposable Dispose 和“使用实现 IDisposable 的对象”部分。

♊ 属性
NewLine 获取或设置由当前 TextWriter 使用的行结束符字符串
public virtual string NewLine { get; set; }

默认行终止符字符串是回车符,后跟换行符 (“\r\n”) 。

每当调用其中一 WriteLine 个方法时,行终止符字符串将写入文本流。 为了使由一个TextReader可读的文本TextWriter写入,只应将“\n”或“\r\n”用作终止符字符串。 如果 NewLine 设置为 null,则改用默认换行符。

♌ 常用方法
Close() 关闭 TextReader并释放与该 TextReader 关联的所有系统资源
public virtual void Close ();

注意:此方法调用 Dispose ,指定 true 以释放所有资源。 不需要专门调用 Close 方法。 请确保 Stream 已正确释放每个对象。 可以 Stream using Using 在 Visual Basic) 中 (或块中声明对象,以确保释放流及其所有资源,或者可以显式调用 Dispose 方法。

Dispose() 释放由 TextReader 对象使用的所有资源
public void Dispose ();
Flush() 清除此流的缓冲区,使得所有缓冲数据都写入到文件中
public virtual void Flush ();
FlushAsync() 异步清除此流的所有缓冲区并导致所有缓冲数据都写入基础设备中
public virtual System.Threading.Tasks.Task FlushAsync ();

返回

Task

表示异步刷新操作的任务。

Write(Char[], Int32, Int32) 将字符的子数组写入文本流
public virtual void Write (char[] buffer, int index, int count);

参数

buffer

Char[]

要从中写出数据的字符数组。

index

Int32

在开始接收数据时缓存中的字符位置。

count

Int32

要写入的字符数。

此方法将从count位置开始的buffer字符数组将数据写入此TextWriter``index字符。

此重载等效于[Write(Char])介于index和 () index``count + 中的每个字符buffer的重载。

WriteAsync(Char[], Int32, Int32) 以异步形式将字符的子数组写入文本流
public virtual System.Threading.Tasks.Task WriteAsync (char[] buffer, int index, int count);

参数

buffer

Char[]

要从中写出数据的字符数组。

index

Int32

在开始接收数据时缓存中的字符位置。

count

Int32

要写入的字符数。

返回

Task<Int32>

表示异步写入操作的任务。

WriteLine() 将行终止符写入文本流
public virtual void WriteLine ();
WriteLine(Char[], Int32, Int32) 将字符的子数组写入文本流,后跟行终止符
public virtual void WriteLine (char[] buffer, int index, int count);

参数

buffer

Char[]

要从中写出数据的字符数组。

index

Int32

在开始接收数据时缓存中的字符位置。

count

Int32

要写入的字符数。

Write(String)/Write(double)/Write(Int32)… 将字符串、数值等写入文本流
WriteLine(String)/WriteLine(double)/WriteLine(Int32)… 将字符串、数值等写入文本流,后跟行终止符
Write(String, Object) 使用与 Format(String, Object)方法相同的语义将格式化字符串写入文本流
public virtual void Write (string format, object? arg0);

示例

设置单个参数的格式

下面的示例使用 方法将个人的年龄嵌入 Format(String, Object) 字符串的中间。

DateTime birthdate = new DateTime(1993, 7, 28);
DateTime[] dates = { new DateTime(1993, 8, 16), 
                     new DateTime(1994, 7, 28), 
                     new DateTime(2000, 10, 16), 
                     new DateTime(2003, 7, 27), 
                     new DateTime(2007, 5, 27) };

foreach (DateTime dateValue in dates)
{
   TimeSpan interval = dateValue - birthdate;
   // Get the approximate number of years, without accounting for leap years.
   int years = ((int) interval.TotalDays) / 365;
   // See if adding the number of years exceeds dateValue.
   string output;
   if (birthdate.AddYears(years) <= dateValue) {
      output = String.Format("You are now {0} years old.", years);
      Console.WriteLine(output);
   }   
   else {
      output = String.Format("You are now {0} years old.", years - 1);
      Console.WriteLine(output);
   }      
}
// The example displays the following output:
//       You are now 0 years old.
//       You are now 1 years old.
//       You are now 7 years old.
//       You are now 9 years old.
//       You are now 13 years old.
♎ 更多方法

更多方法请查阅官方文档TextWriter类


⭐写在结尾:

文章中出现的任何错误请大家批评指出,一定及时修改。

希望写在这里的小伙伴能给个三连支持

  • 33
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会敲键盘的肘子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值