码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【.Net实用方法总结】 整理并总结System.IO中TextWriter类及其方法介绍


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


    在这里插入图片描述

    🌈写在前面:

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


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

    文章目录

        • 1️⃣ System.IO命名空间
        • 2️⃣ TextWriter类
          • ♈ 定义
          • ♊ 属性
            • NewLine 获取或设置由当前 `TextWriter` 使用的行结束符字符串
          • ♌ 常用方法
            • Close() 关闭 TextReader并释放与该 `TextReader` 关联的所有系统资源
            • Dispose() 释放由 TextReader 对象使用的所有资源
            • Flush() 清除此流的缓冲区,使得所有缓冲数据都写入到文件中
            • FlushAsync() 异步清除此流的所有缓冲区并导致所有缓冲数据都写入基础设备中
            • Write(Char[], Int32, Int32) 将字符的子数组写入文本流
            • WriteAsync(Char[], Int32, Int32) 以异步形式将字符的子数组写入文本流
            • WriteLine() 将行终止符写入文本流
            • WriteLine(Char[], Int32, Int32) 将字符的子数组写入文本流,后跟行终止符
            • Write(String)/Write(double)/Write(Int32)... 将`字符串、数值等`写入文本流
            • WriteLine(String)/WriteLine(double)/WriteLine(Int32)... 将`字符串、数值等`写入文本流,后跟行终止符
            • Write(String, Object) 使用与 Format(String, Object)方法相同的语义将格式化字符串写入文本流
          • ♎ 更多方法

    1️⃣ System.IO命名空间

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

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

    • FileStream类

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

    • Path类

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

    • File类

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

    • Dirctory类

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

    2️⃣ TextWriter类

    ♈ 定义

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

    public abstract class TextWriter : MarshalByRefObject, IAsyncDisposable, IDisposable
    
    • 1

    示例

    类是一个抽象类。 因此,不会在代码中实例化它。 该 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");
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

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

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

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

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

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

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

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

    返回

    Task

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

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

    参数

    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);
    
    • 1

    参数

    buffer

    Char[]

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

    index

    Int32

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

    count

    Int32

    要写入的字符数。

    返回

    Task<Int32>

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

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

    参数

    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);
    
    • 1

    示例

    设置单个参数的格式

    下面的示例使用 方法将个人的年龄嵌入 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.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    ♎ 更多方法

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


    ⭐写在结尾:

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

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

  • 相关阅读:
    在不使用PageHelper或Mybatis的情况下实现手动分页
    全球首款AR电脑上线,可投影100英寸屏幕
    用Python写爬虫有哪些好处?
    01背包问题
    如何在 SwiftUI 中创建颜色之间渐变的过渡(教程含源码)
    数据库 MVCC 详解
    记录socket的使用 | TCP/IP协议下服务器与客户端之间传送数据 | java学习笔记
    基于C#实现最长公共子序列
    基于flv.js的视频自动播放
    一个四位数,恰好等于去掉它的首位数字之后所剩的三位数的3倍,这个四位数是多少?
  • 原文地址:https://blog.csdn.net/baidu_33146219/article/details/126755676
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号