C# 文件异步操作
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO; //文件异步操作
namespace FileAsynchronousOperation
{
class Program
{
static void Main(string[] args)
{
//实例化MyFile类
MyFile myFile = new MyFile();
//定义参数
string filePath = "D:\\testasy.txt";
string msg = "helloworld";
//调用异步操作方法
myFile.AsynchronousOperation(filePath,msg);
}
}
/// <summary>
/// 文件
/// </summary>
class MyFile
{
/// <summary>
/// 文件异步操作
/// </summary>
/// <param name="filePath">文件路径</param>
/// <param name="msg">写入内容</param>
public void AsynchronousOperation(string filePath,string msg)
{
FileStream fileSteam = null; FileInfo fileinfo = new FileInfo(filePath);
//判断文件是否存在
if (!fileinfo.Exists)
{
fileSteam = fileinfo.Create();
Console.WriteLine("创建文件{0}", filePath);
fileSteam.Close();
}
fileSteam = new FileStream(filePath, FileMode.Open, FileAccess.Write, FileShare.None, , true);
Console.WriteLine("开启异步操作{0}", fileSteam.IsAsync);
byte[] buffer = Encoding.Default.GetBytes(msg);
//开始执行异步操作
IAsyncResult asynncResult = fileSteam.BeginWrite(buffer,, buffer.Length, new AsyncCallback(EndWriteCallBack), fileSteam);
Console.WriteLine("开始异步写入请稍候...");
Console.Read();
}
/// <summary>
/// 回调函数
/// </summary>
/// <param name="asyncResult">状态</param>
public void EndWriteCallBack(IAsyncResult asyncResult)
{
Console.WriteLine("异步写入开始...");
FileStream stream = asyncResult.AsyncState as FileStream;//转化为FileStream类型
if (stream!=null)
{
stream.EndWrite(asyncResult);
stream.Close();
}
Console.WriteLine("写入完成"); }
}
}
Filestreom 在对文件进行异步操作时,对大数据量读写操作使用 BeginRead 和 Begin 树 rite 方法的效果更好;
而对于数据量较少的读写操作,使川异步方式的速度可能会比同步方式要慢。
所以,你需要针对应用程序的实际情况决定是否要选择异步处理方式。
C# 文件异步操作的更多相关文章
- C#客户端的异步操作
上篇博客[用Asp.net写自己的服务框架] 我讲述了如何实现自己的服务框架,但我想很多人应该用过WebService这类服务框架,相比起来,似乎还缺少什么东西, 是的,我也感觉到了.比如:我可以很容 ...
- 关于generator异步编程的理解以及如何动手写一个co模块
generator出现之前,想要实现对异步队列中任务的流程控制,大概有这么一下几种方式: 回调函数 事件监听 发布/订阅 promise对象 第一种方式想必大家是最常见的,其代码组织方式如下: fun ...
- async + promise 解决回调地狱
// 解决异步回调地狱的方案: async + promise async function writeFile() { // 打开文件 const fd = await new Promis ...
- 看完我的笔记不懂也会懂----Node.js
Node.js 学习 - 命令行窗口 - 进程与线程 - ECMAScript的缺点 - Node模块化 - Node中的全局对象 - 包 package - NPM包管理器 (Node Packag ...
- 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作
原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...
- android用异步操作AsyncTask编写文件查看器
Activity程序 package com.example.fileasynctaskproject; import java.io.File; import java.util.ArrayList ...
- Javascript - 异步操作和读取文件
node.js读取文件 node.js内置了异步读取文件的模块,可以很方便地读取文件的数据.先创建三个txt文档,在根目录下创建一个readFile.js 输入以下代码,然后在vscode的终端中输入 ...
- 【C#进阶系列】27 I/O限制的异步操作
上一章讲到了用线程池,任务,并行类的函数,PLINQ等各种方式进行基于线程池的计算限制异步操作. 而本章讲的是如何异步执行I/O限制操作,允许将任务交给硬件设备来处理,期间完全不占用线程和CPU资源. ...
- C# 异步操作 async await
在编程的过程中,我们会遇到很多需要异步操作的场景.比如要下载一个文件,如果使用同步的方式进行下载,那么UI操作就会被卡住,这时最好能够使用异步的方式进行下载.在C#中,很早就开始支持异步的操作了,只不 ...
随机推荐
- 分布式任务调度平台XXL-Job搭建
下载: https://github.com/xuxueli/xxl-job 下载 然后倒入到自己的工程里面 引入后: 导入数据:跑一边 导入: 修改: Window -->show view- ...
- iOS数据持久化存储之属性列表
属性列表(plist) iOS提供了一种plist格式的文件(属性列表)用于存储轻量级的数据,属性列表是一种XML格式的文件,拓展名为plist.如果对象是NSString.NSDictionary. ...
- druid相关的时间序列数据库——也用到了倒排相关的优化技术
Cattell [6] maintains a great summary about existing Scalable SQL and NoSQL data stores. Hu [18] con ...
- python-多线程2-线程同步
线程同步: 一个场景: 一个列表里所有元素都是0,线程A从后向前把所有元素改成1,而线程B负责从前往后读取列表并打印. 那么,可能线程A开始改的时候,线程B便来打印列表了,输出就变成一半0一半1,这就 ...
- listen 65
Don't Treat Old Gadgets Like Garbage Did you get a new tablet or computer this holiday season? A new ...
- MySQL 单笔订单满6个及以上产品且金额>=300赠送优惠券_20161103
活动内容: 单笔订单满6个及以上产品(帽子.浴巾除外),金额满赠300元,即赠送300-10元(除帽子.浴巾外)优惠券一张.需求数据:满足条件的用户ID活动时间:11.2-11.5(4天)活动规则:① ...
- bzoj 4503 两个串 快速傅里叶变换FFT
题目大意: 给定两个\((length \leq 10^5)\)的字符串,问第二个串在第一个串中出现了多少次.并且第二个串中含有单字符通配符. 题解: 首先我们从kmp的角度去考虑 这道题从字符串数据 ...
- 洛谷P2024食物链——并查集补集的灵活运用
题目:https://www.luogu.org/problemnew/show/P2024 自己在做本题时最大的障碍就是:不会在一个集合的father改变时把相应的补集也跟着改变. 借鉴题解后,才明 ...
- Hadoop安装全教程 Ubuntu14.04+Java1.8.0+Hadoop2.7.6
最近听了一个关于大数据的大牛的经验分享,在分享的最后大牛给我们一个他之前写好的关于大数据和地理应用demo.这个demo需要在Linux环境上搭建Hadoop平台.这次就简单的分享一下我关于在 Lin ...
- MVC之Control中使用AOP
原文转载自http://www.cnblogs.com/iamlilinfeng/archive/2013/03/02/2940162.html 本文目标 一.能够使用Control中的AOP实现非业 ...