2016-06-02 2 views
1

Я пытаюсь скопировать файл (имя_файла) в резервную копию вызова папки. Когда файл успешно скопирован в папку резервного копирования, файл modifySQLFile() будет читать файл из папки резервного копирования и обновлять файл в нем и хранить исходный файл (имя_файла) в обычном месте. Когда программа запускается во второй раз, она будет считывать исходный файл и создавать другую копию для резервного копирования и обновления скопированного файла и перезаписывать предыдущий скопированный файл.Скопируйте, создайте и обновите файл, сохранив исходный файл в C#

Однако, я не уверен, что мои коды поступили не так и как сделать перезапись существующего файла. Пожалуйста, помогите мне, поскольку я новичок в этом.

public string fileName = "DEPOT-Pub_Sub_Combined (wo CardHolder).sql"; 

private void modifySQLFile() 
{ 
    CopyFile(); 

    string[] fileTexts = File.ReadAllLines(@"backup\DEPOT-Pub_Sub_Combined (wo CardHolder).sql"); 


    int counter = 0; 

    //File processing 
    foreach (string line in fileTexts) 
    { 
     //only process non-comments line 
     if (line.StartsWith("--") == false) 
     { 
      //replace instances of server name 
      if (line.Contains(SERVERNAME) == true) 
      { 
       fileTexts[counter] = fileTexts[counter].Replace(SERVERNAME, textBox1.Text);    
      } 

      if (line.Contains(ACCESSID) == true) 
      { 
       fileTexts[counter] = fileTexts[counter].Replace(ACCESSID, textBox2.Text); 
      } 

      if(line.Contains(NETWORKID) == true) 
      { 
       fileTexts[counter] = fileTexts[counter].Replace(NETWORKID, textBox2.Text); 
      } 


     } 
     counter++; 
    } 
    //update file 
    File.WriteAllLines(fileName, fileTexts); 

    MessageBox.Show("Completed!"); 
} 

private void CopyFile() 
{ 

    string targetPath = @"backup"; 
    string destFile = Path.Combine(targetPath, fileName); 

    if(!Directory.Exists(targetPath)) 
    { 
     Directory.CreateDirectory(targetPath); 
    } 

    File.Copy(fileName, destFile, true); 
} 
+0

Самый простой способ перезаписи существующего файла - сначала удалить старый файл, а затем заменить его на новый файл. – sorifiend

+0

Можете ли вы описать более подробную информацию об ошибке, которую вы видите? –

+0

с кодом выше, когда я запускаю программу, все работает нормально, но когда я проверяю файлы в папке, ее там, но не обновляли в папке резервного копирования. Однако вместо этого он обновляет исходный файл. Когда я запускаю второй раз, ничего не обновляется вообще. – Stella

ответ

0

Прежде всего, чтобы ответить на вашу проблему. Вы пишете неправильный файл в методе modifySQLFile(). Должно быть destFileName вместо fileName

File.WriteAllLines(fileName, fileTexts); 

Во-вторых, Предполагая, что этот файл не огромный (< 10MB), тем лучше и проще будет читать содержимое исходного файла в память, изменять содержимое, а затем записать он в резервную копию. Нет необходимости в CopyFile()

+0

эй спасибо jeff, но мой файл довольно большой. 100 над строками сценария SQL для запуска – Stella

+0

100 строк текста довольно малы. 10 МБ, вероятно, будет около 100 тыс. Или более строк. Кстати, ваш код уже читает файл в памяти, как этот файл. File.ReadAllLines' Однако, если вам когда-либо придется столкнуться с необходимостью манипулировать большими файлами в будущем, вы должны использовать File Streams вместо чтения в памяти. –

+0

Я вижу, большое спасибо jeff .. =) – Stella

Смежные вопросы