如何多次正确打开和读取StorageFile?

时间:2015-02-11 05:04:21

标签: c# file windows-runtime windows-phone-8.1

在Windows Phone 8.1(WinRT)中,我从用户的文档文件夹中抓取一个文件并尝试两次读取它。一旦读取每一行并获得进度跟踪目的的总计数。第二次实际解析数据。但是,在第二次传递时,我得到“文件不可读”类型错误。所以我对发生的事情有一点了解,但并不完全。我收到此错误是因为文件流已经在文件的末尾了吗?我不能只是从同一个文件中打开一个新流,还是必须关闭第一个流?

这是我的代码:

public async Task UploadBerData(StorageFile file)
{
    _csvParser = new CsvParser();
    var stream = await file.OpenAsync(FileAccessMode.Read);

    using (var readStream = stream.AsStreamForRead())
    {
        dataCount = _csvParser.GetDataCount(stream.AsStreamForRead());

        // Set the progressBar total to 2x dataCount.
        // Once for reading, twice for uploading data
        TotalProgress = dataCount * 2;
        CurrentProgress = 0;
    }

    var csvData = _csvParser.GetFileData(stream.AsStreamForRead());
    ...
}

1 个答案:

答案 0 :(得分:1)

使用Stream后,position是流长度的结尾。 您可以将其设置为开始再次读取流。

在解析数据函数之前添加以下行。

stream.Position = 0;