Как отфильтровать конкретный файл трех типов. (. Count, .switch, .data) - PullRequest
0 голосов
/ 16 октября 2019

Добавлены файлы в таблице данных.

Здесь моя проблема в том, что я просто добавил файл подсчета первым, поэтому в первые 3 строки добавляются файлы подсчета. и в следующие 3 строки добавляются файлы переключателей. В первых трех строках столбцы файла переключения и файла данных пусты. Это займет следующие 3 строки. Мне нужно заполнить этот столбец в той же строке.

Здесь он фильтрует только файл счета, необходимо отфильтровать 3 типа файлов.

  string[] Count_filePath = Directory.GetFiles(directory, "*.count", SearchOption.AllDirectories);

Для 3 типов файлов 3 отдельныхПожалуйста, предложите простой способ для каждого цикла. В каталоге необходимо проверить 3 типа файлов в каждой подпапке, если какой-либо тип файла отсутствует, необходимо указать в столбце таблицы данных. И заполните данные существующего файла в таблице данных.

  // Getting the latest .Count file:
        var directory = "C:\\MainFolder";

        DataTable dt = new DataTable();
        DataTable dt1 = new DataTable();
        DataRow row;
        DataColumn column;
        column = new DataColumn();
        dt.Columns.Add("Count_File_Date", typeof(String));
        dt.Columns.Add("Count_File_Name", typeof(String));
        dt.Columns.Add("Count_File_LMD", typeof(String));
        dt.Columns.Add("Switch_FileName", typeof(String));
        dt.Columns.Add("Switch_File_Date", typeof(String));
        dt.Columns.Add("Data_File_Name", typeof(String));
        dt.Columns.Add("Data_File_LMD", typeof(String));

         // Getting the values of count file

        string[] Count_filePath = Directory.GetFiles(directory, "*.count", SearchOption.AllDirectories);


        List<string> Count_Filename = new List<string>();
        DateTime Count_L_M_D;
        string Count_File_Name;


        foreach (string CurrentPath in Count_filePath)
        {
            string Content = File.ReadAllText(@CurrentPath);
            string loadedDate = DateTime.ParseExact(Content.Substring(9, 8), "yyyyMMdd",
                            CultureInfo.InvariantCulture).ToString("yyyy/MM/dd");
            DateTime Datevalue = DateTime.Parse(loadedDate);
            Count_File_Name = Path.GetFileName(CurrentPath);
            Count_L_M_D = Directory.GetLastWriteTime(CurrentPath);

            row = dt.NewRow();
            dt.Rows.Add(row);
            row["Count_File_Date"] = Datevalue;
            row["Count_File_Name"] = Count_File_Name;
            row["Count_File_LMD"] = Count_L_M_D;
        }

       // Getting the values of switch file
       string[] Switch_filePath = Directory.GetFiles(directory, "*.switch", SearchOption.AllDirectories);
       DateTime Switch_L_M_D;
       string S_File_Name;
       foreach (string CurrentPath in Switch_filePath)
       {
           S_File_Name = Path.GetFileName(CurrentPath);
           Switch_L_M_D = Directory.GetLastWriteTime(CurrentPath);

           row = dt.NewRow();
           dt.Rows.Add(row);

           row["Switch_FileName"] = S_File_Name;
           row["Switch_File_Date"] = Switch_L_M_D;
       }

       // Getting the values of data file

       string[] Data_filePath = Directory.GetFiles(directory, "*.data", SearchOption.AllDirectories);
       List<DateTime> DataFileLMDate_List = new List<DateTime>();
       List<string> Data_FileName_List = new List<string>();
       DateTime Data_L_M_D;
       string Data_File_Name;

       foreach (string CurrentPath in Switch_filePath)
       {
           Data_File_Name = Path.GetFileName(CurrentPath);
           Data_FileName_List.Add(Data_File_Name);
           Data_L_M_D = Directory.GetLastWriteTime(CurrentPath);
           DataFileLMDate_List.Add(Data_L_M_D);

           row = dt.NewRow();
           dt.Rows.Add(row);

           row["Data_File_Name"] = Data_File_Name;
           row["Data_File_LMD"] = Data_L_M_D;
       }

1 Ответ

0 голосов
/ 17 октября 2019

Вы получаете ошибку, потому что в datatable нет столбцов. У вас объявлена ​​переменная DataColumn column, но она никогда не добавляется в таблицу данных.

Вам необходимо добавить все необходимые столбцы в таблицу данных, прежде чем вы сможете добавить в нее какие-либо строки.

В васЕсли вам необходимо создать экземпляры типа DataColumn и установить для их свойства ColumnName соответствующие значения, а затем добавить их в таблицу.

DataTable dt = new DataTable();

DataColumn column = new DataColumn();
column.ColumnName = "Switch_FileName";
dt.Columns.Add(column);

column = new DataColumn();
column.ColumnName = "Switch_File_Date";
dt.Columns.Add(column);

string[] Switch_filePath = Directory.GetFiles(directory, "*.switch", SearchOption.AllDirectories);
DateTime Switch_L_M_D;
string S_File_Name;

foreach (string CurrentPath in Switch_filePath)
{
   var row = dt.NewRow();
   S_File_Name = Path.GetFileName(CurrentPath);
   Switch_L_M_D = Directory.GetLastWriteTime(CurrentPath);

   row["Switch_FileName"] = S_File_Name;
   row["Switch_File_Date"] = Switch_L_M_D;
   dt.Rows.Add(row);
}

Надеюсь, это поможет вам решить вашу проблему.

...