2012-12-07 51 views
23

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

如何从“数据”文件夹中读取文本文件。 我尝试了下面的东西。

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

这是thowing错误,找不到文件。

我检查了一些Stackoverflow答案发布之前,没有一个是为我工作。

我该怎么办?谢谢!

+0

谷歌“当前目录”。可执行文件不会从你的源代码文件夹中运行! –

+0

在构建项目时是否将此数据文件夹复制到输出中?检查文件上的选项并进行更正。 – ryadavilli

+0

设置是始终复制到输出目录。 – SKJ

回答

46

下面的代码应该工作:

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

我的文件夹和文件不存在于程序集文件夹中:s ..为什么? –

+5

在Visual Studio中,标记文件,然后将'Build Action'设置为'Content',将'Copy Action Output'设置为'Copy always'。 –

+0

只需使用@“Data \ Name.txt”应用@FlorianMoser符号 –

16

这取决于哪里就是你的数据文件夹

要得到所在目录下.exe文件是:

AppDomain.CurrentDomain.BaseDirectory 

为了得到当前目录:

Environment.CurrentDirectory 

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

9

如果你需要得到一个名为“数据”文件夹中的所有文件,只需将其代码如下

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

现在的“文档”包括两个文本的完整对象名称的数组'数据'文件夹'数据'中的文件。始终

+0

@Bunyip :你需要阅读文本文件的内容还是只需要知道文件夹中的文件? –

+0

谢谢你,为我工作! –

5

复制到输出目录设置,那么请尝试以下操作:

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

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

this.Icon = new Icon(@"../../Images/MyIcon.ico"); 
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; 
    } 
}