假设我有一个流链,它执行压缩->加密->文件I/O操作。
在C#中,使用同步I/O,代码大概如下:
为了利用FileStream提供的异步I/O,我认为我不能简单地在压缩流上使用BeginWrite()方法。
在这个例子中,为了利用FileStream的异步I/O,我认为EncryptingStream需要通过调用包装流上的BeginWrite/EndWrite来实现Write。如果包装流是FileStream,则会得到异步I/O。这样理解是否正确?
在C#中,使用同步I/O,代码大概如下:
int n=0;
byte[] buffer= new byte[2048];
string inputFileName = "input.txt";
string outputFileName = inputFileName + ".compressed.encrypted";
using (FileStream inputFileStream = File.Open(inputFileName, FileMode.Open, FileAccess.Read))
{
using (FileStream outputFileStream = File.Open(outputFileName, FileMode.Create, FileAccess.ReadWrite))
{
using (Stream encryptor = new EncryptingStream(fs))
{
using (Stream compressor = new CompressorStream(encryptor))
{
while ((n = inputFileStream.Read(buffer, 0, buffer.Length)) > 0)
{
compressor.Write(buffer, 0, n);
}
}
}
}
}
为了利用FileStream提供的异步I/O,我认为我不能简单地在压缩流上使用BeginWrite()方法。
在这个例子中,为了利用FileStream的异步I/O,我认为EncryptingStream需要通过调用包装流上的BeginWrite/EndWrite来实现Write。如果包装流是FileStream,则会得到异步I/O。这样理解是否正确?