2015-02-11 60 views
0

在Windows Phone 8.1(WinRT)中,我從用戶的文檔文件夾中抓取一個文件並嘗試兩次讀取它。一次讀取每行並獲得總行數以進行進度跟蹤。第二次真正解析數據。但是,在第二次傳遞時,我得到「文件不可讀」類型的錯誤。所以我對發生的事情有一點點了解,但並不完全。我是否收到此錯誤,因爲文件的流已經在文件的末尾?我不能只是從同一個文件中打開一個新的流,還是必須關閉第一個流?如何正確打開並從StorageFile中讀取多次?

這裏是我的代碼:

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

使用Stream後,position是流長度的結束。 您可以將其設置爲開始再次讀取流。

在解析數據函數之前添加以下行。

stream.Position = 0;