如何打开桌面上的文件

时间:2013-10-27 23:04:39

标签: c# path text-files environment streamreader

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

这是我正在使用的代码。

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

StreamReader Reader - new StreamReader(FileName);

StreamReader

会抛出异常

4 个答案:

答案 0 :(得分: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方法为文件创建完全限定名称。结果由流阅读器处理。

关键在于,如果您只提供文件名,那么应用程序将查看其根目录(就像您编写的那样,调试目录)。提示是一条错误消息,告诉您它使用调试目录的名称创建了一个完整路径。

答案 1 :(得分:2)

请改为尝试:

var reader = File.OpenText(FileName);

或小文件:

var allText = File.ReadAllText(FileName);

当然......指定的FileName总是可能实际上不存在....对吗?我的意思是,默认情况下,它可能会在.exe旁边寻找一个文件,该文件将在/.../.../bin/debug/或其他内容。

如果您特别想在当前用户的桌面文件夹中查找文件,则可能需要:

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

答案 2 :(得分:1)

“无法找到文件”实际上是发生了什么。注意异常详细信息并检查您是否输入现有文件名以及扩展名。 另外不要忘记丢弃StreamReader:

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

答案 3 :(得分: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();
            // ...
        }