如何从文件夹和子文件夹中提取数据文件

问题描述:

  1. 我在阅读文件和子文件夹时遇到问题。我的代码对于给定的固定源代码路径很好,E:\\Folder\\test\\test2如何从文件夹和子文件夹中提取数据文件

  2. 测试中有很多文件夹,如test2,test3,test4等。我想提取主文件夹test中的数据文件。

  3. 例如,我想提取测试中的文件,所以我想读取测试中包含的所有文件,而不是为test3,test4和许多代码编写代码。我想提取所有文件并将其写入另一个驱动器上的相同源结构。

  4. 一样,如果源结构是这样E:\\Folder\\test\\test2则目标结构应该像C:\\Folder\\test\\test2

有没有办法做到这一点?

这里是我的代码,

private void dateTimePicker1_ValueChanged(object sender, EventArgs e) 
{ 
    DateTime dt = dateTimePicker1.Value; 
    txtSelectedDate.Text = dt.ToString("yyyyMMdd"); 
    selectedDate = txtSelectedDate.Text; 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
    DateTime stdate = Datetimepicker1.value; 
    while (stdate <= DateTime.Now) 
    { 
     txtSelectedDate.Text = stdate.ToString("yyyyMMdd"); 
     selectedDate = txtSelectedDate.Text; 
     string DayBgSpot = "E:\\Folder\\test\\test2"; 
     string DayBgSpotDestination = "E:\\Folder1"; 
     int DT = int.Parse(txtSelectedDate.Text); 
     FileReader Reader = new FileReader(); 
     FileReader Reader1 = new FileReader(); 
     Reader.OpenDirectory(DayBgSpot); 
     Reader.ReadNaster(); 
     string path = DayBgSpotDestination + "\\" + txtSelectedDate.Text + ".txt"; 
     StreamWriter Strwriter = new StreamWriter(path); 
     try 
     { 
      while (Reader.iMaRecordsLeft > 0) 
      { 
       string SecName = Reader.sMaSecName; 
       string Symbol = Reader.sMaSecSymbol; 
       Symbol = prefix + Symbol; 
       int abc = 0; 

       Reader.OpenSecurityByName(Reader.sMaSecName); 
       if (Reader.iSeRecords > 0) 
       { 
        while (Reader.iSeRecordsLeft > 0) 
        { 
         Reader.ReadDay(); 
         float O = Reader.dSeo; 
         float H = Reader.dSeh; 
         float L = Reader.dSel; 
         float C = Reader.dSec; 
         double V = Reader.dSeV; 
         double OI = Reader.dSrest; 
         string T = Reader.iSeTime.ToString(); 
         string D = Reader.iSeDate.ToString(); 
         if (int.Parse(D) == DT) 
         { 
          string a = string.Concat(SecName, ",", Symbol, ",", D, ",", T, ",", O, ",", H, ",", L, ",", C, ",", V, ",", OI); 
          if (SecName != "" && V != 0) 
          { 
           Strwriter.WriteLine(a); 
          } 
         } 
        } 
       } 
       abc++; 
       Reader.ReadNaster(); 
      } 

      Reader.CloseDirectory(); 
      Strwriter.Close(); 
      Strwriter.Dispose(); 
     } 
     catch 
     { 
     } 
     stdate = stdate.AddDays (1); // It will get next date till present 
    } 
} 

喜欢的东西

System.IO.DirectoryInfo baseFolder = new DirectoryInfo(@"c:\Folder\test\"); 
string destinationPath = @"e:\Folder\test\"; 
System.IO.DirectoryInfo[] subDirs = baseFolder.GetDirectories(); 
foreach (System.IO.DirectoryInfo dirInfo in subDirs) 
{ 
    string subFolder = dirInfo.Name; 
    System.IO.FileInfo[] fileInfos = dirInfo.GetFiles("*.txt"); 
    foreach (System.IO.FileInfo fileInfo in fileInfos) 
    { 
     // Do something with the files 
     string writePath = destinationPath + subFolder + @"\" + fileInfo.Name; 
     // Write 
    } 
} 

如果您使用的是.NET 4.0,这是一个行:

var filepaths = Directory.GetFiles(path: @"C:\", searchPattern: "*pattern*", searchOption: SearchOption.AllDirectories); 

显然,根路径搜索模式与建议的样本不符,但我的意图应该清楚。

我希望这可以帮助