需要读取文件夹中的一系列.txt文件并将其写入datagridview

时间:2013-11-30 12:20:30

标签: c# winforms

所以我有一个文件夹C:\ IDFolder包含一系列名为ID01到ID99的.txt文件。每个文件有5行ID,密码,名称,bla..bla .. 我有一个Windows窗体包含一个名为profile的datagridview表。在具有该表的同一表单上,有一个“导入”按钮。当用户单击“导入”按钮时,这应该工作:表上的每一行都将从.txt系列导入数据。 例如:

第一行将包含:ID01 /密码/名称/ ....(取自ID01.txt)和第二行:ID02 /密码/名称/ .....(取自ID02.txt )

我试过

foreach (System.IO.File.Exist(@"C:\IDFolder")

这就是我的想法:

foreach ( /* file in C:\IDFolder */)
        {
            this.pro.Rows.Add(/*filename*/ , /*first line in file*/ , ....)
        }

但它宣布错误。现在,我被困住了。请帮忙。感谢。

4 个答案:

答案 0 :(得分:1)

此处没有在线资格。 (我所知道的)。您应该使用Directory检索所有文件。然后用File.Open打开文件

foreach (var file in Directory.EnumerateFiles(@"C:\IDFolder", "*.txt"))
{
  /* your code */
}

答案 1 :(得分:1)

foreach (var file in Directory.EnumerateFiles(@"c:\", "*.txt", SearchOption.AllDirectories))
{
    this.pro.Rows.Add(/*filename*/ , GetFirstLine(/*filename*/,2) , ....)
}

string GetFirstLine(string fileName, int line)
{
   using (var sr = new StreamReader(fileName)) {
       for (int i = 1; i < line; i++)
          sr.ReadLine();
       return sr.ReadLine();
   }
}

答案 2 :(得分:1)

尝试这样的事情:

    String path=@"C:\IDFolder";

    String [] files= System.IO.Directory.GetFiles(path);
    List<String> ID=new List<string>();
    List<String> Password=new List<string>();
    List<String> Name=new List<string>();
    int count=0;
    int rows = 0;
    foreach (String strFileName in files)
    {
         count = 0;
       String[] allLines = System.IO.File.ReadAllLines(strFileName);
       foreach (String line in allLines)
       {

           dataGridView1.Rows.Add();
           if (allLines[count].Split('/').Length==3)
           {                      
               dataGridView1.Rows[rows].Cells[0].Value = allLines[count].Split('/')[0];
               dataGridView1.Rows[rows].Cells[1].Value = allLines[count].Split('/')[1];
               dataGridView1.Rows[rows].Cells[2].Value = allLines[count].Split('/')[2];
               count++;
               rows++;
           }

       }
    }

<强>输出:

它会将指定文件夹中每个文件的ID,Password and Name添加到DataGridView

答案 3 :(得分:1)

如果您不介意,只需创建一个类来保存您的记录文件。我们说ID类。迭代每个文件,读取并将其存储到ID类中并返回数据列表。您可以将列表绑定到数据网格视图中。

这里是代码:

public class ID
{
    public string id {get; set; }
    public string UserName {get; set; }
    public string Password {get; set; }        
    public string Bla1 {get; set; }
    public string Bla2 {get; set; }
}

public IList<ID> GetAllID()
{
    string folderName = @"c:\IDFolder";
    string fileName = "ID0";
    string formatFile = ".txt";
    IList<ID> IDs = new List<ID>();

    for (int i = 0; i < 9; i++)
    {
        string indexFile = (i + 1).ToString();

        string filePath = folderName + "\\" + fileName + indexFile + formatFile;

        if (File.Exists(filePath))
        {
            string[] result = File.ReadAllLines(filePath);
            ID id = new ID();
            id.id = result[0];
            id.UserName = result[1];
            id.Password = result[2];
            id.Bla1 = result[3];
            id.Bla2 = result[4];

            // add id into IDs
            IDs.Add(id);
        }
     }
     return IDs;
}