2013-05-14 69 views
1

我在Windows 8 metro應用程序中創建StreamReader對象時遇到了問題。我試圖讓它讀取我本地目錄中的文本文件,但它一直向我顯示這個錯誤。任何人都可以爲這個或其他解決方案提供解決方案嗎?如何在Metro App中使用StreamReader在Metro App中編寫.txt文件?

我正在使用MS Visual Studio Ultimate 2012,metro應用程序。

代碼:

 int level = 1; 

     var fileName = string.Format(@"Mazes\level{0}.txt", level); 

     using (var sr = new StreamReader(fileName)) 
     { 
      var l = 0; 
      while (!sr.EndOfStream) 
      { 
       string line = sr.ReadLine(); 

       for (var c = 0; c < line.Length; c++) 
       { 
        mazeValues[c, l] = line[c]; 

        if (mazeValues[c, l] == '1') 
        { 
         var glass = new Glass(); 
         glass.SetValue(Grid.ColumnProperty, c); 
         glass.SetValue(Grid.RowProperty, l); 
         grdMaze.Children.Add(glass); 
         mazeGlasses[c, l] = glass; 
        } 
       } 
       l++; 
      } 
     } 

錯誤顯示:

最好重載方法爲 'System.IO.StreamReader.StreamReader(System.IO.Stream)' 具有一些 無效arguements。

+1

哪裏是指向'@「迷宮\級別{0} .txt'文件路徑?那是一個映射驅動器或東西嗎? – 2013-05-14 03:47:57

+0

使用的StreamWriter寫.. – matzone 2013-05-14 03:49:39

+0

@JeremyThompson其內的項目指向,其中一個名爲'Mazes'的文件夾 – fafarifah 2013-05-14 03:50:25

回答

1

Windows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadLinesAsync可用於此目的。

using System; 
using Windows.Storage; 
async void test2() 
{ 

    var fileName = string.Format(@"ms-appx:///Mazes/level{0}.txt", level); 
    try 
    { 
     var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///assets/textfile1.txt")); 
     var lines = await FileIO.ReadLinesAsync(file); 
     foreach (var line in lines) 
     { 
      // code to process each line here 
     } 
    } 
    catch (Exception e) 
    { 
     // handle exceptions 
    } 
+0

嗨Sushil,我已經把代碼區域,我一直面臨一些問題..我試過你的方法,但我不太清楚如何應用它:/ – fafarifah 2013-05-14 05:16:09

+0

你可以使用ReadLinesAsync案件。更新了答案 – Sushil 2013-05-14 11:36:34

0
WebClient client = new WebClient();  
System.IO.Stream stream = client.OpenRead(path_of_text _file); 
    System.IO.StreamReader str = new StreamReader(stream); 
    string Text = str.ReadLine(); 

    while (!Text.EndOfStream) 
     { 
      string line = Text.ReadLine(); 

      for (var c = 0; c < line.Length; c++) 
      { 
       mazeValues[c, l] = line[c]; 

       if (mazeValues[c, l] == '1') 
       { 
        var glass = new Glass(); 
        glass.SetValue(Grid.ColumnProperty, c); 
        glass.SetValue(Grid.RowProperty, l); 
        grdMaze.Children.Add(glass); 
        mazeGlasses[c, l] = glass; 
       } 
      } 
      l++; 
     } 
+0

嗨,錯誤說'客戶端'不存在於內容中:/ – fafarifah 2013-05-14 06:50:27

+0

我想你還沒有爲它添加命名空間......請通過添加名稱空間來檢查..... 使用命名空間使用System.Net的 ; 希望這會爲oyu現在.. – sanjeev 2013-05-14 06:52:38

+0

嗨Sanjeev,我已經添加了你給的命名空間,但同樣的錯誤仍然存​​在:/ – fafarifah 2013-05-14 07:06:16

相關問題