using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace WinApp
{
public class AsyncReadWrite
{
//同步读文件
public static string SyncRead()
{
string path = @"d:\test.txt";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 20480, false);
StringBuilder sbReadResult = new StringBuilder();
using (fs)
{
byte[] data = new byte[1024];
int nbyteReads;
do
{
nbyteReads = fs.Read(data, 0, data.Length);
sbReadResult.Append(Encoding.Default.GetString(data, 0, nbyteReads));
} while (nbyteReads > 0);
//Console.WriteLine(sbReadResult.ToString());
}
//Console.ReadLine();
return sbReadResult.ToString().Trim();
}
//异步读文件
public static string AsyncRead()
{
string path = @"d:\Query.txt";
byte[] data = new byte[1024];
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read, 20480, true);
StringBuilder sbReadResult = new StringBuilder();
AsyncCallback asyncCallback = null;
//匿名方法
asyncCallback = delegate(IAsyncResult asyncResult)
{
int nRead = fs.EndRead(asyncResult);
sbReadResult.Append(Encoding.Default.GetString(data, 0, nRead));
if (nRead > 0)
{
fs.BeginRead(data, 0, 1024, asyncCallback, null);
}
else
{
fs.Close();//显示释放托管堆资源
}
};
IAsyncResult asyncReadResult = fs.BeginRead(data, 0, 1024, asyncCallback, null);
return sbReadResult.ToString().Trim();
}
//异步写文件
public static void AsyncWrite(string content)
{
string path = @"d:\write.txt";
FileStream fs = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 20480, true);
byte[] data = Encoding.Default.GetBytes(content);
AsyncCallback asyncCallback = null;
asyncCallback = delegate(IAsyncResult async)
{
fs.EndWrite(async);
fs.Close();//显示释放托管堆资源
};
IAsyncResult asyncWriteResult = fs.BeginWrite(data, 0, data.Length, asyncCallback, null);
Console.ReadLine();
}
}
}