2011-05-09 60 views
0

我可以通过使用BETALIB阅读器读取文件夹文件,但它通过在folderbrowserdialog中给出路径来读取大文件夹 我可以读取文件夹,但在该文件夹中有很多我想要读取子文件夹的文件夹和文件。如何读取包含在其中的子文件夹和文件

为eaxample: - E:\ EXE \ TTD \ ttd1 \ ttd2 \ BSEM \ f1.dat E:\ EXE \ TTD \ ttd1 \ ttd2 \ MCDEX \ f1.dat

我想读通过给文件夹浏览器对话框中的路径 EX:E:\ EXE

如果我选择路径E:\ EXE它应该读取其中包含的所有子文件夹和文件。

任何一个可以说我什么,我应该在代码

private void btnSourceBOMCX_Click(object sender, EventArgs e) 
    { 
     fbdSourceBOMCX.Description = "Please select BOMCX source folder"; 
     fbdSourceBOMCX.RootFolder = Environment.SpecialFolder.Desktop; 
     if ((fbdSourceBOMCX.ShowDialog() != DialogResult.Cancel) || (fbdSourceBOMCX.SelectedPath != "")) 
     { 
      sourceBOMCX = fbdSourceBOMCX.SelectedPath; 
      if (File.Exists(sourceBOMCX + "\\Master")) 
      { 
       txtSourceBOMCX.Text = fbdSourceBOMCX.SelectedPath; 
       Interaction.SaveSetting ((new Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase()).Info.Title , "RealTime Converter", "sourceBOMCX", fbdSourceBOMCX.SelectedPath); 
      } 
      else 
      { 

      } 


     } 
    } 

私人无效bgManual_DoWork(对象发件人,DoWorkEventArgs五)改变 {

 try 
     { 
      int DT = int.Parse(txtSelectedDate.Text); 
      BETALIB.BLReader Reader = new BETALIB.BLReader(); 
      BETALIB.BLReader Reader1 = new BETALIB.BLReader(); 
      Reader.OpenDirectory(txtSourceBOBOMCX.Text); 
      Reader.ReadMaster(); 
      string path = txtDestinationBOBOMCX.Text + "\\XYZ-" + 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; 
        int xyz = lbselectedBOBOMCX.Items.Count - 1; 
        while (abc <= xyz) 
        { 
         if (SecName == (string)lbselectedBOBOMCX.Items[abc]) 
         { 

          Reader.OpenSecurityByName(Reader.sMaSecName); 
          Reader.SeekToEnd(); 
          Reader.Seek(-1); 
          Reader.ReadDay(); 
          float O = Reader.dSeOpen; 
          float H = Reader.dSeHigh; 
          float L = Reader.dSeLow; 
          float C = Reader.dSeClose; 
          double V = Reader.dSeVolume; 
          double OI = Reader.dSeOpenInterest; 
          string T = Reader.iSeTime.ToString(); 
          string D = Reader.iSeDate.ToString(); 

          label9.Text = SecName + "/"; 
          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.ReadMaster(); 
       } 

       Reader.CloseDirectory(); 
       Strwriter.Close(); 
       Strwriter.Dispose(); 
      } 
      catch 
      { 
       Reader.CloseDirectory(); 
       Strwriter.Close(); 
       Strwriter.Dispose(); 
      } 
     } 
     catch 
     { 
     } 

请帮我

谢谢提前

} 
+0

耶稣!开始修复你的问题。 – user492238 2011-05-09 08:43:02

+0

你有没有尝试过实现递归? :) – 2011-05-09 08:58:17

+0

实现递归的手段? – voipservicesolution 2011-05-09 09:30:21

回答

2

可以使用System.IO类库的DirectoryInfo和FileInfo类和逻辑去如下

1)到进程目录创建两个函数,一个用于处理文件 2)在该目录中读取功能读取验证如果该项目是文件或目录 3)如果产品目录它递归调用自身 4)如果项目是文件,它发送到文件处理方法进行处理

public void fnProcessDirectory(string strPath) 
    { 
     if (File.Exists(strPath)) 
     { 
      fnProcessFile(strPath); 
     } 
     else if (Directory.Exists(strPath)) 
     { 
      string[] fileEntries = Directory.GetFiles(strPath); 
      string[] subdirEntries = Directory.GetDirectories(strPath); 

      foreach (string fileName in fileEntries) 
      { 
       fnProcessFile(fileName); 
      } 

      foreach (string dirName in subdirEntries) 
      { 
       fnProcessDirectory(dirName); 
      } 
     } 
    } 

    public void fnProcessFile(string strPath) 
    { 
     //ProcessFile 
    } 
+0

发生错误它高亮这一行Reader.OpenDirectory(txtSourceBOBOMCX.Text);和错误是目录不包含任何betastock文件 – voipservicesolution 2011-05-09 09:24:55

+0

可以将此代码添加到我的代码我是新来的C#可以ü请添加它可能是我做错了,这就是为什么我得到的错误,请你可以添加我 – voipservicesolution 2011-05-09 09:53:56

+0

有没有必要使用打开的目录,你可以使用getdirectories和getfiles文件夹的内容,然后迭代使用foreach来处理。 – 2011-05-09 10:21:32

相关问题