异步创建文件

Pra*_*bhu 8 .net c# file-io asynchronous async-await

如何修改此方法以异步调用它?

private void Write(string fileName, data)
{
    File.WriteAllText(fileName, data);           
}
Run Code Online (Sandbox Code Playgroud)

Yuv*_*kov 19

查看FileStream.WriteAsync(注意你必须使用正确的重载,它bool指示是否应该运行异步:)

public async Task WriteAsync(string data)
{
    var buffer = Encoding.UTF8.GetBytes(data);

    using (var fs = new FileStream(@"File", FileMode.OpenOrCreate, 
        FileAccess.Write, FileShare.None, buffer.Length, true))
    {
         await fs.WriteAsync(buffer, 0, buffer.Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑

如果你想使用你的string data并且避免转换为a byte[],你可以使用StreamWriter.WriteAsync接受字符串的更抽象和更简洁的重载:

public async Task WriteAsync(string data)
{
    using (var sw = new StreamWriter(@"FileLocation"))
    {
         await sw.WriteAsync(data);
    }
}
Run Code Online (Sandbox Code Playgroud)


Ami*_*itE 5

使用.NetCore 2.0,您可以只使用File.WriteAllTextAsync