2015-05-20 3 views
0

Я хотел бы немного изменить код, чтобы, если у меня уже есть файл, он будет писать (1), (2) и т. Д. После имени файла. В текущем режиме он сохраняет файл, затем другое использование программы добавляет больше строк в существующий файл. Если я получу идею о том, как изменить его, я думаю о том, чтобы сделать файлы не (1), (2), а Results_DATE_TIME (для exmaple: Results_2015_05_20_1953).C# incrementing filename

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
foreach (string filename in openFileDialog.FileNames) //number of files varies 
{ 
    double m = Math(); 

    string path = desktopPath + @"\Results.txt"; 
    using (StreamWriter writer = new StreamWriter(path, true)) 
    { 
     writer.WriteLine(m); 
    } 
} 
+0

Разве вы не можете просто использовать DateTime, чтобы добавить к вашему имени файла? – ragerory

ответ

0

Заменить поколение пути, используя следующие:

string fileName = string.Format(@"\Results_{0}.txt", DateTime.Now.ToString("yyyy_MM_dd_hh_mm_ss")); 
string path = desktopPath + fileName; 
+0

Он работает, хотя, когда второй проход, он сделает файл с другой секундой, поэтому он будет для exmpale писать 200 строк и следующий 200 в следующем файле. –

0

Попробуйте коснуться вдоль линий

path = "Results-" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ff") + ".txt"; 
0

, если два человек добавить файл в то же время, он будет конфликтовать в любом случае. В этом случае, я хотел бы использовать GUID:

path = += "-" + Guid.NewGuid().ToString(); 
0

Попробуйте

fileName = string.Concat(@"\Results_", DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-ff"), ".txt"); 
    string path = desktopPath + fileName;