string strInput=@"c:/file.input";
string strOutput=@"c:/file.input";
public void ReadLargeFile()
{
byte[] btsReadBuffer=new byte[1024*8];
//异步开始读取文件内容
FileStream fsRead=new FileStream(strInput,FileMode.Open,FileAccess.Read,FileShare.Write);
if(fsRead.CanRead)
{
fsRead.BeginRead(btsReadBuffer,0,btsReadBuffer.Length,new AsyncCallback(Callback_ReadFile),fsRead);
}
else
{
fsRead.Close();
throw new ApplicationException("Current Stream Couldn't Read!");
}
}
/// <summary>
/// 异步读取文件后所进行的操作
/// </summary>
/// <param name="ar"></param>
public void Callback_ReadFile(IAsyncResult ar)
{
FileStream fsRead=null;
FileStream fsWrite=null;
byte[] btsWriteBuffer=new byte[1024*8];
fsRead=(FileStream)ar.AsyncState;
int intReadCount=fsRead.EndRead(ar);
if(intReadCount>0)
{
string strReadContent=Encoding.Default.GetString(btsReadBuffer,0,btsReadBuffer.Length);
//这里放处理代码
//.....
//....
btsWriteBuffer=Encoding.Default.GetBytes(strReadContent);
fsWrite=new FileStream(strOutput,FileMode.OpenOrCreate,FileAccess.Write,FileShare.Read);
if(fsWrite.CanWrite)
{
fsWrite.BeginWrite(btsWriteBuffer,0,btsWriteBuffer.Length,new AsyncCallback(Callback_WriteFile),fsWrite);
}
else
{
fsWrite.Close();
throw new ApplicationException("Current Stream Couldn't Write!");
}
}
else
{
fsRead.Close();
return;
}
fsRead.BeginRead(tbp1_GlobalData.btsBuffer,0,tbp1_GlobalData.btsBuffer.Length,new AsyncCallback(Callback_ReadFile),fsRead);
}
public void Callback_WriteFile(IAsyncResult ar)
{
FileStream fsWrite=null;
try
{
fsWrite=(FileStream)ar.AsyncState;
fsWrite.EndWrite(ar);
fsWrite.Close();
}
catch(Exception ex)
{
fsWrite.Close();
throw ex;
}
}
http://topic.csdn.net/t/20061231/23/5269461.html
string strOutput=@"c:/file.input";
public void ReadLargeFile()
{
byte[] btsReadBuffer=new byte[1024*8];
//异步开始读取文件内容
FileStream fsRead=new FileStream(strInput,FileMode.Open,FileAccess.Read,FileShare.Write);
if(fsRead.CanRead)
{
fsRead.BeginRead(btsReadBuffer,0,btsReadBuffer.Length,new AsyncCallback(Callback_ReadFile),fsRead);
}
else
{
fsRead.Close();
throw new ApplicationException("Current Stream Couldn't Read!");
}
}
/// <summary>
/// 异步读取文件后所进行的操作
/// </summary>
/// <param name="ar"></param>
public void Callback_ReadFile(IAsyncResult ar)
{
FileStream fsRead=null;
FileStream fsWrite=null;
byte[] btsWriteBuffer=new byte[1024*8];
fsRead=(FileStream)ar.AsyncState;
int intReadCount=fsRead.EndRead(ar);
if(intReadCount>0)
{
string strReadContent=Encoding.Default.GetString(btsReadBuffer,0,btsReadBuffer.Length);
//这里放处理代码
//.....
//....
btsWriteBuffer=Encoding.Default.GetBytes(strReadContent);
fsWrite=new FileStream(strOutput,FileMode.OpenOrCreate,FileAccess.Write,FileShare.Read);
if(fsWrite.CanWrite)
{
fsWrite.BeginWrite(btsWriteBuffer,0,btsWriteBuffer.Length,new AsyncCallback(Callback_WriteFile),fsWrite);
}
else
{
fsWrite.Close();
throw new ApplicationException("Current Stream Couldn't Write!");
}
}
else
{
fsRead.Close();
return;
}
fsRead.BeginRead(tbp1_GlobalData.btsBuffer,0,tbp1_GlobalData.btsBuffer.Length,new AsyncCallback(Callback_ReadFile),fsRead);
}
public void Callback_WriteFile(IAsyncResult ar)
{
FileStream fsWrite=null;
try
{
fsWrite=(FileStream)ar.AsyncState;
fsWrite.EndWrite(ar);
fsWrite.Close();
}
catch(Exception ex)
{
fsWrite.Close();
throw ex;
}
}
http://topic.csdn.net/t/20061231/23/5269461.html