Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从未知位置读取文件?_C#_Readfile - Fatal编程技术网

C# 从未知位置读取文件?

C# 从未知位置读取文件?,c#,readfile,C#,Readfile,我已从microsoft获得此读取文件代码 @"C:\Users\computing\Documents\mikec\assignment2\task_2.txt" 当我在做作业时,这很好,但是当我交作业时,我的讲师不会有和我相同的目录 所以我想知道是否有一种方法可以从保存程序的文件中读取它 我想我可以把它作为一个资源添加,但我不确定这是否是分配的正确方式,它是允许在任何文件 谢谢您可以使用该方法获取当前用户的文档文件夹: Environment.GetFolderPath(Environme

我已从microsoft获得此读取文件代码

@"C:\Users\computing\Documents\mikec\assignment2\task_2.txt"
当我在做作业时,这很好,但是当我交作业时,我的讲师不会有和我相同的目录

所以我想知道是否有一种方法可以从保存程序的文件中读取它

我想我可以把它作为一个资源添加,但我不确定这是否是分配的正确方式,它是允许在任何文件

谢谢

您可以使用该方法获取当前用户的文档文件夹:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
并举例说明:

string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string file = Path.Combine(myDocuments, @"mikec\assignment2\task_2.txt");
// TODO: do something with the file like reading it for example
string contents = File.ReadAllText(file);
您可以使用该方法获取当前用户的文档文件夹:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
并举例说明:

string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string file = Path.Combine(myDocuments, @"mikec\assignment2\task_2.txt");
// TODO: do something with the file like reading it for example
string contents = File.ReadAllText(file);

如果要从程序所在的目录中读取文件,请使用

using System.IO;
...
string myFileName = "file.txt";
string myFilePath = Path.Combine(Application.StartupPath, myFileName);
编辑: 针对非winforms应用程序的更通用的解决方案:

string myFilePath = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), myFileName);

如果要从程序所在的目录中读取文件,请使用

using System.IO;
...
string myFileName = "file.txt";
string myFilePath = Path.Combine(Application.StartupPath, myFileName);
编辑: 针对非winforms应用程序的更通用的解决方案:

string myFilePath = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), myFileName);

您可以跳过路径-这将从程序的工作目录中读取文件

只要
@“task_2.txt”
就可以了


更新:请注意,该方法在某些情况下不起作用。如果您的讲师使用一些自动运行程序(脚本、应用程序)来验证您的应用程序,那么@ken2k的解决方案将更加健壮。

您可以跳过该路径-这将从程序的工作目录中读取文件

只要
@“task_2.txt”
就可以了


更新:请注意,该方法在某些情况下不起作用。如果您的讲师使用一些自动运行程序(脚本、应用程序)来验证您的应用程序,那么@ken2k的解决方案将更加健壮。

如果是命令行应用程序,您应该将文件名作为命令行参数,而不是使用固定路径。沿着……的路线的东西

public static void Main(string[] args)
{
    if (args == null || args.Length != 1)
    {
        Console.WriteLine("Parameters are not ok, usage: ...");
        return;
    }

    string filename = args[0];

...

…应允许您从命令获取文件名。

如果是命令行应用程序,则应将文件名作为命令行参数,而不是使用固定路径。沿着……的路线的东西

public static void Main(string[] args)
{
    if (args == null || args.Length != 1)
    {
        Console.WriteLine("Parameters are not ok, usage: ...");
        return;
    }

    string filename = args[0];

...
…应该允许您从命令获取文件名。

使用相对路径

您可以将文件放在应用程序所在的文件夹中。 您可以使用Directory.GetCurrentDirectory().ToString()方法获取应用程序的当前文件夹。如果您将文件放在子文件夹中,则可以使用 Directory.GetCurrentDirectory().ToString()+“\subfolderName\”

使用相对路径

您可以将文件放在应用程序所在的文件夹中。 您可以使用Directory.GetCurrentDirectory().ToString()方法获取应用程序的当前文件夹。如果您将文件放在子文件夹中,则可以使用 Directory.GetCurrentDirectory().ToString()+“\subfolderName\”



也许只是我,但我真的不明白你的问题是什么…为什么不只是一个
文件浏览器对话框
?也许只是我,但我真的不明白你的问题是什么…为什么不只是一个
文件浏览器对话框
?应用程序。StartupPath可能与documents文件夹不同。例如,应用程序可以部署在程序文件中。你是对的,但我认为OP不想专门使用Documents文件夹。application.StartupPath可能与Documents文件夹不同。例如,应用程序可以部署在程序文件中。你说得对,但我认为OP不想专门使用Documents文件夹。他要求的是程序所在的位置,而不是我的文档。她要求的是程序所在的位置,不是我的documents@DarinDimitrov但他的问题表明,这当然是不可行的。我只是建议了一种可能的方法来克服这个问题。这并不总是有效的。如果应用程序是从其他位置启动的,该怎么办<代码>环境。CurrentDirectory不能是应用程序的物理位置。@ken2k True。但我非常怀疑仅仅是讲师的作业的应用程序是否会以编程方式更改其工作目录。@SergeyKudriavtsev是的,但可能合理发生的用例是,应用程序是从另一个位置从cmd.exe启动的(因此在启动时指定当前目录)@DarinDimitrov,但他的问题表明,这当然是当它不起作用的时候。我只是建议了一种可能的方法来克服这个问题。这并不总是有效的。如果应用程序是从其他位置启动的,该怎么办<代码>环境。CurrentDirectory不能是应用程序的物理位置。@ken2k True。但我非常怀疑仅仅是讲师的作业的应用程序是否会以编程方式更改其工作目录。@SergeyKudriavtsev是的,但可能合理发生的用例是,应用程序是从另一个位置从cmd.exe启动的(从而在启动时指定当前目录)。