繁体   English   中英

从未知位置读取文件?

[英]Read a file from an unknown location?

我已经从Microsoft获得了此读取的文件代码

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

我在工作时效果很好,但是当我要交这份作业时,我的讲师将没有与我相同的目录。

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

我当时想我可以将其添加为资源,但是我不确定这是否是允许在任何文件中进行分配的正确方法。

谢谢

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

只需@"task_2.txt"

更新 :请注意,该方法在某些情况下不起作用。 如果您的讲师使用某种自动运行器(脚本,任何应用程序)来验证您的应用程序,则@ 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方法获取当前用户的documents文件夹:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM