0

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

这是我正在使用的代码。

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

StreamReader Reader - new StreamReader(FileName);

异常被抛出StreamReader

4

4 回答 4

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 方法为文件创建一个完全限定的名称。结果由流阅读器处理。

关键是,如果您只提供文件名,应用程序将在其根目录(如您所写,即调试目录)中查找。提示是错误消息,告诉您它使用调试目录的名称创建了完整路径。

于 2013-10-27T23:21:34.507 回答
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);
于 2013-10-27T23:07:32.857 回答
1

“找不到文件”实际上是发生了什么。请注意异常详细信息并检查您是否输入了现有文件名和扩展名。也不要忘记处理 StreamReader:

    string text;
    var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), fileName);
    using (var sr = new StreamReader(path))
    {
        text = sr.ReadToEnd();
    }
于 2013-10-27T23:19:37.460 回答
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();
            // ...
        }
于 2013-10-27T23:14:45.530 回答