2013-10-27 86 views
0

我试图打开与StreamReader桌面上的文本文件(example.txt)。但是当我运行我的代码时,它抛出的错误信息是:无法找到文件(无论代码路径,一直引导到我的项目中的调试文件夹)。所以我想知道,Streamder这个工作的错误工具是什么?如何打开桌面上的文件

这是我正在使用的代码。

Console.WriteLine("What file would you like to load?"); 
string FileName = Console.ReadLine(); 

StreamReader Reader - new StreamReader(FileName); 

的异常被在StreamReader

回答

4

这可能是因为你的程序无法找到该文件,因为它是找错了地方。您可以矫正像这样的东西......

private void ReadFromDesktop(string fileName) 
    { 
     string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
     string fullName = System.IO.Path.Combine(desktopPath, fileName); 
     using (StreamReader steamReader = new StreamReader(fullName)) 
     { 
      string content = steamReader.ReadToEnd(); 
     } 
    } 

该方法以名称的文件(大概是你在控制台上输入的),然后查询环境的路径到您的桌面。

然后它使用Path.Combine方法为该文件创建完全限定的名称。结果由流读取器处理。

问题是,如果你只提供文件名,应用程序将在它的根目录(也就是你写的调试目录)中查找。这个提示是错误消息告诉你它使用你的调试目录的名字创建了一个完整的路径。

+0

这确实有用。谢谢。 –

2

抛出试试这个:

var reader = File.OpenText(FileName); 

或为小档案:

var allText = File.ReadAllText(FileName); 

当然......它总是可能的指定的文件名实际上不存在....对吧?我的意思是,默认情况下,它可能会在.exe旁边的本地文件中查找,该文件位于/.../.../bin/debug/中。

如果你特别想看看在当前用户的桌面文件夹中的文件,你可能需要:

var fullPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\" + FileName; 
var allText = File.ReadAllText(fullPath); 
0

。在你的代码中没有明显的错误(假设你使用正确的语法,而不是实际的代码在你的文章中),但可能是因为路径不正确而导致错误。

如果该文件存在,并且您使用绝对路径,你应该能够做这样的事情(在Windows上使用驱动器字母开头):

 Console.WriteLine("What file would you like to load?"); 
     string fileName = Console.ReadLine(); 

     using (Stream reader = new StreamReader(fileName)) 
     { 
      string line = reader.ReadLine(); 
      // ... 
     } 
+0

因此,知道什么路径看起来像用作输入会很有趣。 (不幸的是,我不能直接对此问题发表评论) – glaed

1

“找不到文件”,实际上是什么发生了。请注意例外的详细信息,并检查您是否输入现有文件名以及扩展名。 也不要忘记处置的StreamReader:

string text; 
    var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), fileName); 
    using (var sr = new StreamReader(path)) 
    { 
     text = sr.ReadToEnd(); 
    } 
相关问题