可以使用并行异步I/O方法:
下面的例子写10个文本文件演示了并行处理。
public async void ProcessWriteMult()
{
string folder = @"tempfolder\";
List<Task> tasks = new List<Task>();
List<FileStream> sourceStreams = new List<FileStream>();
try
{
for (int index = 1; index <= 10; index++)
{
string text = "In file " + index.ToString() + "\r\n";
string fileName = "thefile" + index.ToString("00") + ".txt";
string filePath = folder + fileName;
byte[] encodedText = Encoding.Unicode.GetBytes(text);
FileStream sourceStream = new FileStream(filePath,
FileMode.Append, FileAccess.Write, FileShare.None,
bufferSize: 4096, useAsync: true);
Task theTask = sourceStream.WriteAsync(encodedText, 0, encodedText.Length);
sourceStreams.Add(sourceStream);
tasks.Add(theTask);
}
await Task.WhenAll(tasks);
}
finally
{
foreach (FileStream sourceStream in sourceStreams)
{
sourceStream.Close();
}
}
}
那么速度在哪里?编写文件或遍历目录或检查文件是否存在 - 或其他地方?你有没有计时,看看时间到了哪里?你在12秒内写了多少个文件? –
@Matthew,阅读文件需要时间 –
那么你不可能加快速度。文件有多大?它一定很大......有没有什么办法可以使它变小 - 也许通过每隔一段时间删除一些旧线(假设它是一个日志文件)?你是否可以每周创建一个新文件,方法是以某种方式在年份和星期编号之后命名文件? –