从项目中的文件夹中读取文件

时间:2012-12-07 11:38:44

标签: c#

我有一个C#项目(Windows控制台应用程序)。 我在项目中创建了一个名为 Data 的文件夹。文件夹Data中有两个文本文件。

如何从“数据”文件夹中读取文本文件。 我在下面尝试过。

string[] files = File.ReadAllLines(@"Data\Names.txt")

找不到文件是错误的。

我已经检查了之前发布的一些Stackoverflow答案,但没有一个能为我工作。

我该怎么办?谢谢!

10 个答案:

答案 0 :(得分:83)

下面的代码应该有效:

string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Data\Names.txt");
string[] files = File.ReadAllLines(path);

答案 1 :(得分:26)

它取决于您的数据文件夹

的位置

获取.exe文件所在的目录:

AppDomain.CurrentDomain.BaseDirectory

获取当前目录:

Environment.CurrentDirectory

然后,您可以连接目录路径(@"\Data\Names.txt"

答案 2 :(得分:11)

如果您需要获取名为“Data”的文件夹中的所有文件,只需将其编码为

string[] Documents = System.IO.Directory.GetFiles("../../Data/");

现在'Documents'包含'Data'文件夹'Data'中两个文本文件的完整对象名称数组。

答案 3 :(得分:10)

我有一个C#项目(Windows控制台应用程序)。我在项目中创建了一个名为Images的文件夹。有一个名为MyIcon.ico的ico文件。我在Images文件夹中访问了MyIcon.ico,如下所示。

this.Icon = new Icon(@"../../Images/MyIcon.ico");

答案 4 :(得分:5)

设置“始终复制到输出目录”,然后尝试以下操作:

 Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
 String Root = Directory.GetCurrentDirectory();

答案 5 :(得分:1)

使用此代码读取文件夹和子文件夹中的所有文件

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

答案 6 :(得分:0)

对于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);
}

答案 7 :(得分:0)

{{1}}

答案 8 :(得分:-1)

使用它,就可以了。

string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"TestData\test.json");
var response = JsonConvert.DeserializeObject<Response>(File.ReadAllText(path));

请注意:您需要确保将文件test.json的属性设置为

“构建操作” =“内容”

“复制到输出目录” =“始终复制”

答案 9 :(得分:-2)

这对我很有帮助,如果您使用

var dir = Directory.GetCurrentDirectory()

路径填充超出当前文件夹,它将包含此路径\ bin \ debug 我建议您使用

string dir = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName

然后打印dir值并验证路径是否在为您提供