从未知位置读取文件

本文关键字:文件 读取 位置 未知 | 更新日期: 2023-09-27 18:20:28

我从微软得到了这个已读取的文件代码

@"C:'Users'computing'Documents'mikec'assignment2'task_2.txt"

当我在做这项工作时,这很好,但当我交这项作业时,我的讲师不会有和我相同的目录。

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

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

感谢

从未知位置读取文件

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

只需@"task_2.txt"即可。

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

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

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

如果是命令行应用程序,则应将文件名作为命令行参数,而不是使用固定路径。类似于;

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

应该可以让您从命令中获取文件名。

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

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

使用相对路径。

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

File.OpenRead(Directory.GetCurrentDirectory().ToString() + "'fileName.extension")

StreamReader file = new StreamReader(File.OpenRead(Directory.GetCurrentDirectory().ToString() + ""));
            string fileTexts = file.ReadToEnd();