C# 如何打开桌面上的文件

C# 如何打开桌面上的文件,c#,path,text-files,environment,streamreader,C#,Path,Text Files,Environment,Streamreader,我正在尝试打开一个文本文件example.txt,它位于带有StreamReader的桌面上。但当我运行代码时,它抛出的错误消息是:无论代码路径如何,都找不到文件,一直指向项目中的调试文件夹。所以我想知道,流线型切割机是不是工作的错误工具 这是我正在使用的代码 Console.WriteLine("What file would you like to load?"); string FileName = Console.ReadLine(); StreamReader Reader - ne

我正在尝试打开一个文本文件example.txt,它位于带有StreamReader的桌面上。但当我运行代码时,它抛出的错误消息是:无论代码路径如何,都找不到文件,一直指向项目中的调试文件夹。所以我想知道,流线型切割机是不是工作的错误工具

这是我正在使用的代码

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

StreamReader Reader - new StreamReader(FileName);
在StreamReader上引发异常,请尝试以下操作:

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);

假设您使用了正确的语法,而不是文章中的实际代码,那么代码中没有明显的错误,但错误可能是由于路径不正确造成的

如果文件存在,并且在windows上使用以驱动器号开头的绝对路径,则应该能够执行以下操作:

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

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

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

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

您的程序可能找不到该文件,因为它正在错误的位置查找。你可以用这样的方法来纠正

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


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

因此,了解您用作输入的路径是什么样子会很有趣。不幸的是,我不能直接评论这个问题