2014-11-09 129 views
0

我打开了一个目录,并且读取了该目录中的一些文件,并做了一些更改,现在我想用相同的文件名保存更改F:\ BI \ Out \并保留原始文件。 当我添加这两行 var outFilePath = @“F:\ BI \ Out \”+ Path.GetFileName(file); File.WriteAllText(outFilePath,text); 我能够将文件保存在新文件夹\ Out, 下,但是当我打开它们时,我发现只有一个文件被正确更改,所有其他文件中的旧文字被空白空间替换,而不是新文字。 谁能帮我谢谢我做了一些更改后,如何在某个目录下的某个目录下保存某些文件

string text = ""; 
    string[] files; 

    private void Form1_Load(object sender, EventArgs e) 
    { 

     try 
     { 
      files = Directory.GetFiles(@"F:\BI\In\", "*.*", SearchOption.AllDirectories); 
     } 
     catch (IOException ex) 
     { 
      MessageBox.Show(ex.Message); 
      this.Close(); 
     } 
    } 

    private void btnUpdate_Click(object sender, EventArgs e) 
    { 
     if (txtEtlPath.Text == "") 
     { 
      MessageBox.Show("Please Enter path"); 
      txtEtlPath.Focus(); 
     } 

     else 
     { 

      foreach (string file in files) 
      { 
       if (System.IO.File.Exists(file)) 
       { 
        text = File.ReadAllText(file); 
        text = text.Replace("Company_Address", txtCompanyAddress.Text + "_BI"); 
        text = text.Replace("Company_Name", txtCompanyName.Text.Trim() + "_BIDW"); 
        text = text.Replace("C:\\BIfolder",cboDrive.Text + txtEtlPath.Text.Trim()); 
        var outFilePath = @"F:\BI\Out\" + Path.GetFileName(file); 
        File.WriteAllText(outFilePath, text); 
       } 
+0

搜索是你的朋友,无论是在谷歌或Stackoverflow。[**'Directory.CreateDirectory' **方法](http://msdn.microsoft.com/en-us/library/system.io.directory.createdirectory%28v=vs。 110%29.aspx)和[**'如何:写入文本文件**](http://msdn.microsoft.com/en-us/library/8bh11f1k.aspx)? – Prix 2014-11-09 01:28:00

回答

0

在您的foreach()循环:

如果你想要的文件的子文件夹结构中发现,做一个替代的文件路径:

var outFilePath = file.Replace(@"F:\BI\In\", @"F:\BI\Out\"); 

你将需要创建子文件夹,然后才能写入更改的文件:

new FileInfo(outFilePath)).Directory.Create(); 

如果你不希望子文件夹,你可以直接写入顶层文件夹:

var outFilePath = @"F:\BI\Out\" + Path.GetFileName(file); 

写作很简单,只需记住有一个可选的编码参数:

File.WriteAllText(outFilePath, text); 
+0

感谢您对此的支持:) – Mohamed 2014-11-09 16:22:25

+0

我能够将文件保存在新文件夹\ Out下,但是当我打开它们时,我发现只有一个文件被正确更改,其他所有文件的旧文字都被替换为空白空间不是由新单词 – Mohamed 2014-11-09 17:33:27

+0

我看不到任何发布会导致这种情况,在每个文本上放置断点。替换行,将鼠标悬停在文本和文本框变量上,以查看已读和什么每个替换正在改变。 – WhoIsRich 2014-11-10 01:17:05