【问题标题】:How do I save some files under a directory in a new directory after making some changes进行一些更改后,如何将一些文件保存在新目录中的目录下
【发布时间】:2014-11-09 01:25:40
【问题描述】:

我打开了一个目录并读取了该目录中的一些文件并进行了一些更改,现在我想将更改以相同的文件名保存在 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);
                }

【问题讨论】:

标签: c#


【解决方案1】:

在你的 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);

【讨论】:

  • 我能够将文件保存在新文件夹\Out下,但是当我打开它们时,我发现只有一个文件被正确更改,而所有其他文件的旧单词都被空格替换,而不是用新词
  • 我看不到任何会导致这种情况的发布,在每个文本上放置断点。替换行,将鼠标悬停在文本和文本框变量上以查看已读取的内容以及每个替换正在更改的内容。
  • 是的,我试过了,它采用的值与我输入的值相同,但是当我编写 alltext 时,它被替换为空白,这很奇怪。无论如何,非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多