C#异步将文本内容写入文件

在C#/.NET中,将文本内容写入文件最简单的方法是调用 File.WriteAllText() 方法,但这个方法没有异步的实现,要想用异步,只能改用有些复杂的 FileStream.WriteAsync() 方法。

使用 FileStream.WriteAsync() 有2个需要注意的地方,1是要设置bufferSize,2是要将useAsync这个构造函数参数设置为true,示例调用代码如下:

public async Task CommitAsync()
{
    var bits = Encoding.UTF8.GetBytes("{\"text\": \"test\"}");
    using (var fs = new FileStream(
        path: @"C:\temp\test.json",
        mode: FileMode.Create,
        access: FileAccess.Write,
        share: FileShare.None,
        bufferSize: 4096,
        useAsync: true))
    {
        await fs.WriteAsync(bits, 0, bits.Length);
    }
}

看这个方法的帮助文档中对useAsync参数的说明:

//   useAsync:
        //     Specifies whether to use asynchronous I/O or synchronous I/O. However, note
        //     that the underlying operating system might not support asynchronous I/O,
        //     so when specifying true, the handle might be opened synchronously depending
        //     on the platform. When opened asynchronously, the System.IO.FileStream.BeginRead(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
        //     and System.IO.FileStream.BeginWrite(System.Byte[],System.Int32,System.Int32,System.AsyncCallback,System.Object)
        //     methods perform better on large reads or writes, but they might be much slower
        //     for small reads or writes. If the application is designed to take advantage
        //     of asynchronous I/O, set the useAsync parameter to true. Using asynchronous
        //     I/O correctly can speed up applications by as much as a factor of 10, but
        //     using it without redesigning the application for asynchronous I/O can decrease
        //     performance by as much as a factor of 10.

从中可以得知,只有设置useAsync为true,才真正使用上了异步IO。

时间: 2024-10-03 03:23:04

C#异步将文本内容写入文件的相关文章

java 将内容写入文件 txt

@Test //将内容写入文件 public void xieru() throws Exception{ FileWriter fileWriter=new FileWriter("d:\\Result.txt"); int [] a=new int[]{111,222,333,444,555,666}; for (int i = 0; i < a.length; i++) { fileWriter.write(String.valueOf(a[i])+"\n&quo

C#读取和写入文件

一.读取文件 如果你要读取的文件内容不是很多, 可以使用 File.ReadAllText(FilePath) 或指定编码方式 File.ReadAllText(FilePath, Encoding)的方法. 它们都一次将文本内容全部读完,并返回一个包含全部文本内容的字符串 string str = File.ReadAllText(@"c:\temp\ascii.txt"); //也可以指定编码方式  string str2 = File.ReadAllText(@"c:\

运用BufferedWriter把数据写入文件

public class WriteReadFiles { private static Logger log = LoggerFactory.getLogger(WriteReadFiles.class); public boolean writeFile(String content) { String filename = "E:/java_src/MVCDemo3/MVCDemo3/accounts.txt"; try { File f = new File(filename)

php学习笔记--高级教程--读取文件、创建文件、写入文件

打开文件:fopen:fopen(filename,mode);//fopen("test.txt","r"): 打开模式:r  仅仅读方式打开,将文件指针指向文件头 r+  读写方式打开,将文件指针指向文件头 w  写入方式,指向文件头,假设不存在则尝试创建 w+ 读写方式,指向文件头,假设不存在则尝试创建 a  写入方式打开,指向文件末尾,假设不存在则尝试创建 a+ 读写方式打开,指向文件末尾,假设不存在则尝试创建 读取文件:fread:fread(); rea

基础学习总结(三)--文本数据读写文件、SD卡

简单的文本数据写入文件不需要权限,读写SD卡在4.0版本前需要写权限.在4.0后需要读写权限 布局: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android

NIO学习:使用Channel、Buffer写入文件

NIO的效率要高于标准IO,因为NIO将最耗时的IO操作(填充和提取缓冲区)转移会操作系统.NIO以块为单位传输数据,相比标准IO的以字节为单位效率要高很多. 通道和缓冲时NIO的核心对象,每个NIO操作都要使用到它们. 通道是对流的模拟,但与流不同,通道的传输是双向的,一个通道可以同时用于读和写. 缓冲区是一个容器,它包含将要写入或者刚读出的数据.使用通道进行读写时都要经过缓冲区. 使用NIO写入文件,可以通过文件流获取通道 FileOutputStream outputStream=new

linux网络分析、性能分析、文本格式化、文件读写操作之利器

好的工具能够让我们工作更加高效,结合工作中的情况,今天分享下linux下比较好用的几个工具. 网络分析工具 mtr mtr是网络链路检测判断问题非常好用的工具,集成了tracert和ping这两个命令的功能,动态的输出检测结果.mtr 默认发送icmp数据包进行链路探测,会对链路上的相关节点做持续探测并给出相应的统计信息,mtr 能避免节点波动对测试结果的影响其中中间线路丢包严重但是目标地址不丢包,可能是因为某些主机路由对icmp协议不做处理或者只分配固定限额的资源处理,所以是正常情况.因为ic

PHP内置函数file_put_content(),将数据写入文件,使用FILE_APPEND 参数进行内容追加

file_put_contents(fileName,data,flags,context) 入参说明: 参数 说明 fileName 要写入数据的文件名 data 要写入的数据.类型可以是 string,array(但不能为多维数组),或者是 stream 资源 flags 可选,规定如何打开/写入文件.可能的值: FILE_USE_INCLUDE_PATH:检查 filename 副本的内置路径 FILE_APPEND:在文件末尾以追加的方式写入数据 LOCK_EX:对文件上锁 contex

win8不通过新打开窗口进行打开和保存文件,点击即显示文本内容,点击即保存文件

前面的一篇博客讲到通过打开新窗口进行打开和保存文件,这一篇则重点介绍怎样一步到位来进行打开和保存文件(这里还以.txt文本文件为例). 我们要打开.txt文本文件,无非是想要里面的文本内容,并且把其显示到页面里罢了,那我们能不能直接点击按钮就让文件的内容自动显示到页面上............ 而不需要经过打开新窗口这一步骤呢 同样,我们点击保存按钮,能不能就直接给文件命名为自己想要的名称,而且直接保存到自己想要的位置或者文件里........ 而不经过打开新窗口定位某一个具体的文件夹下这一步骤