复制,创建和更新文件,将原始文件保存在C#

时间:2016-06-02 02:22:18

标签: c# asp.net

我正在尝试将我的文件(fileName)复制到文件夹调用备份中。当文件已成功复制到备份文件夹中时,modifySQLFile()将从备份文件夹中读取文件并更新其中的文件并将原始文件(fileName)保留在通常位置。当程序第二次运行时,它将读取原始文件并创建另一个副本进行备份并更新复制的文件并覆盖以前复制的文件。

但是,我不确定我的代码出了什么问题以及如何覆盖现有文件。请帮助我,因为我是新手。

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);
}

1 个答案:

答案 0 :(得分:0)

首先回答你的问题。您正在modifySQLFile()方法中写入错误的文件。应该是destFileName而不是fileName

File.WriteAllLines(fileName, fileTexts);

其次,假设此文件不大(<10MB),更好更简单的方法是将原始文件的内容读入内存,修改内容然后将其写入备份。不需要CopyFile()