我从微软获得了这个读取文件代码
@"C:\Users\computing\Documents\mikec\assignment2\task_2.txt"
当我正在处理它时工作正常,但是当我接受这个任务时,我的讲师不会和我有相同的目录。
所以我想知道是否有办法从程序保存的文件中读取它?。
我在想我可以将它添加为资源,但我不确定这是否是在任何文件中允许的分配的正确方式。
由于
答案 0 :(得分:4)
您可以跳过路径 - 这将从程序的工作目录中读取文件。
只需@"task_2.txt"
即可。
更新:请注意,在某些情况下,该方法无效。如果您的讲师使用一些自动运行器(脚本,应用程序)来验证您的应用程序,那么@ ken2k的解决方案将更加强大。
答案 1 :(得分:2)
如果要从程序所在的目录中读取文件,请使用
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);
答案 2 :(得分:1)
如果是命令行应用程序,则应将文件名作为命令行参数,而不是使用固定路径。有些东西;
public static void Main(string[] args)
{
if (args == null || args.Length != 1)
{
Console.WriteLine("Parameters are not ok, usage: ...");
return;
}
string filename = args[0];
...
...应该让你从命令中获取文件名。
答案 3 :(得分: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);
答案 4 :(得分:0)
使用相对路径。
您可以将文件放在应用程序所在的文件夹中。 您可以使用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();