【问题标题】:How to write a stream to a file in Windows Runtime?如何在 Windows 运行时将流写入文件?
【发布时间】:2014-05-17 16:08:18
【问题描述】:

周围有很多问题,但主要是关于将字符串写入文件。我有点糊涂了!

将流写入文件的正确方法是什么?

我做了什么:

Stream stream = await GetStream(source);

var file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("TempUsersFile", CreationCollisionOption.ReplaceExisting);
var fileStream = await file.OpenAsync(FileAccessMode.ReadWrite);

using (var dataWriter = new Windows.Storage.Streams.DataWriter(fileStream))
{
    // How can I write to buffer and write to the file
}

【问题讨论】:

    标签: c# windows-phone-8 windows-runtime windows-store-apps windows-phone-8.1


    【解决方案1】:

    将流写入文件的方法有很多种,它们也取决于您的需要。下面的方法对指定的缓冲区执行异步操作:

    public async Task SaveStreamToFile(Stream streamToSave, string fileName, CancellationToken cancelToken)
    {
        StorageFile file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
        using (Stream fileStram = await file.OpenStreamForWriteAsync())
        {
            const int BUFFER_SIZE = 1024;
            byte[] buf = new byte[BUFFER_SIZE];
    
            int bytesread = 0;
            while ((bytesread = await streamToSave.ReadAsync(buf, 0, BUFFER_SIZE)) > 0)
            {
                await fileStram.WriteAsync(buf, 0, bytesread);
                cancelToken.ThrowIfCancellationRequested();
            }
        }
    }
    

    我还实现了CancellationToken,以防需要取消长时间运行的任务。

    【讨论】:

      【解决方案2】:

      我建议使用 StreamReader 和 StreamWriter 类:

       StreamWriter sw = new StreamWriter(outstream);
       StreamReader sr = new StreamReader(instream);
      
       while (!sr.EndOfStream)
       {
          int ch = sr.Read();
          sw.Write(ch);
       }
      

      【讨论】:

        猜你喜欢
        • 2013-05-28
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多