我有一个C#项目(Windows控制台应用程序)。我在项目内部创建了一个名为Data的文件夹。文件夹数据内有两个文本文件。
如何从“数据”文件夹中读取文本文件。我尝试了下面的事情。
string[] files = File.ReadAllLines(@"Data\Names.txt")
找不到文件,这是错误的提示。
我已经检查了一些之前发布的Stackoverflow答案,但没有一个对我有用。
我该如何进行?谢谢!
我有一个C#项目(Windows控制台应用程序)。我在项目内部创建了一个名为Data的文件夹。文件夹数据内有两个文本文件。
如何从“数据”文件夹中读取文本文件。我尝试了下面的事情。
string[] files = File.ReadAllLines(@"Data\Names.txt")
找不到文件,这是错误的提示。
我已经检查了一些之前发布的Stackoverflow答案,但没有一个对我有用。
我该如何进行?谢谢!
Answers:
下面的代码应该工作:
string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Data\Names.txt");
string[] files = File.ReadAllLines(path);
Build Action到Content,并Copy to Output Directory以Copy always
这取决于您的数据文件夹在哪里
要获取.exe文件所在的目录:
AppDomain.CurrentDomain.BaseDirectory
要获取当前目录:
Environment.CurrentDirectory
然后,您可以串联目录路径(@"\Data\Names.txt")
如果您需要获取名为“ Data”的文件夹中的所有文件,只需将其编码如下
string[] Documents = System.IO.Directory.GetFiles("../../Data/");
现在,“文档”由“数据”文件夹“数据”中两个文本文件的完整对象名称数组组成。
设置总是复制到输出目录,然后尝试以下操作:
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
String Root = Directory.GetCurrentDirectory();
对于Xamarin.iOS,如果文件存在,则可以使用以下代码获取文件的内容。
var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine(documents, "xyz.json");
if (File.Exists(filename))
{
var text =System.IO.File.ReadAllText(filename);
}
使用此代码还可以读取文件夹和子文件夹中的所有文件
class Program
{
static void Main(string[] args)
{
getfiles get = new getfiles();
List<string> files = get.GetAllFiles(@"D:\Document");
foreach(string f in files)
{
Console.WriteLine(f);
}
Console.Read();
}
}
class getfiles
{
public List<string> GetAllFiles(string sDirt)
{
List<string> files = new List<string>();
try
{
foreach (string file in Directory.GetFiles(sDirt))
{
files.Add(file);
}
foreach (string fl in Directory.GetDirectories(sDirt))
{
files.AddRange(GetAllFiles(fl));
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return files;
}
}
使用它,就可以了。
string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"TestData\test.json");
var response = JsonConvert.DeserializeObject<Response>(File.ReadAllText(path));
请注意:您需要确保将文件的属性设置test.json为
“生成操作” =“内容”
“复制到输出目录” =“始终复制”
如果您使用
var dir = Directory.GetCurrentDirectory()
路径填充超出当前文件夹,它将包含此路径\ bin \ debug我建议您使用的是
string dir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName
然后打印dir值并验证路径是否在为您提供