2013-05-14 42 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

相关问题