2017-07-28 5 views
0

ファイル名を配列に取得し、ファイル名をCSVファイルにロードする方法を知りたいと思います。たとえば、ファイル名はFile_1_20170428101607です。ファイル名(日付と時刻の形式 - 28/04/2017 10:16:07)を出力ファイル(csvファイル)の列に解析する必要があります。これは時間のコードです。確認して、csvファイルに解析する配列に時間を追加する方法はありますか?C#コンソールアレイに時間を追加する方法

private static string[] GetFileNames(string path, string filter) 
{ 
    string fileName = @”C:\\Desktop\\File_1_20170428101607.csv”; 

    string result; 

    result = Path.GetFileName(fileName); 
    Console.WriteLine(“GetFileName(‘{0}’) returns ‘{1}'”, 
    fileName, result); 

    string[] files = Directory.GetFiles(path, filter); 
    for (int i = 0; i parsing was not possible -> return null 
    { 
     return null; 
    } 
} 

    private static DateTime? ParseDateFromFilename(string filename) 
    { 
     //regex is used to extract the 14 digit timestamp from filename 
     var timestamp = Regex.Match(filename, @"\d{14}$"); 
     if (!timestamp.Success) 
     { 
      //if no match was found return null 
      return null; 
     } 

     try 
     { 
      //try to parse the date with known timestamp and return 
      return DateTime.ParseExact(timestamp.Value, "yyyyMMddHHmmss", CultureInfo.InvariantCulture); 
     } 
     catch 
     { 
      //any error -> parsing was not possible -> return null 
      return null; 

     } 
+0

あなただけの日付と時刻を含むファイル名の部分を取得し、それを文字列として返す必要があるか、またはあなたが 'DateTime'としてそれが必要なのでしょうか? –

+0

私はcsvファイルのDateTimeとして最初の列に必要です。 – RainyDay

答えて

0

あなたはこれを試すことができます。

まずCSV形式のコンテンツが含まれますStringBuilderを作成します。

StringBuilder csv = new StringBuilder(); 
string filePath = "..."; 

for loopを作成し、2列の値を取り、それがStringBuilder

を行う追加します
//for loop start 

string fileName = "File_1_20170428101607"; 
string datePart = fileName.Split('_').Last(); 
DateTime dt = DateTime.ParseExact(datePart, "yyyyMMddhhmmss", null); 
string dateString = dt.ToString("dd/mm/yyyy hh:MM:ss", System.Globalization.CultureInfo.InvariantCulture); 

var firstColVal = fileName; 
var secondColVal = dateString; 

var newLine = string.Format("{0},{1}", firstColVal, secondColVal); 
csv.AppendLine(newLine); 

//loop end 

for loopの後CSVファイルへのStringBuilder内容を保存します。

File.WriteAllText(filePath, csv.ToString()); 
+0

「あなたのcsvファイルにStringBuilderの内容を保存することはどういう意味ですか:」 – RainyDay

+0

私は新しいファイルを作成することを意味します。既存のファイルに列を追加し、そこからすべてのテキストを読み込み、新しい列を追加して編集して、ファイルの内容を置き換えます。 – daniell89

関連する問題