创建后写入新的文本文件

Posted

技术标签:

【中文标题】创建后写入新的文本文件【英文标题】:Write in new text file after being created 【发布时间】:2021-10-04 06:13:01 【问题描述】:

我想在 app 文件夹中创建文本文件后,从文本框中的内容写入创建的文本文件。

我收到一条错误消息,说它无法写入,因为另一个进程正在使用中,我该如何解决这个问题?

我希望 textbox3 中的内容在创建后写入新创建的文件中。所以文本文件不存在,它正在从 textBox2 上的用户输入创建一个文本文件。我希望 textBox3 的输入在生成后立即写入新文件。

错误:`System.IO.IOException: '进程无法访问文件'C:\Users\Jason\Desktop\app\x.txt',因为它正被另一个进程使用。'

下面是我的代码:

private void button1_Click(object sender, EventArgs e)

    Console.WriteLine();
    Console.WriteLine("GetFolderPath: 0",
        Environment.GetFolderPath(Environment.SpecialFolder.System));

    string filename = @"C:\Users\Jason\Desktop\app\" + textBox2.Text + ".txt";
    File.Create(filename);
    File.WriteAllText(filename, textBox3.Text);

【问题讨论】:

我想知道调用File.Create 然后File.WriteAllText 的想法从何而来?这里没有答案(关于 SO),没有教程,也没有 msdn。 这能回答你的问题吗? Easiest way to read from and write to files Environment.SpecialFolder.Desktop可以获取当前用户的桌面。示例:string filename = Path.Combine(Environment.SpecialFolder.Desktop, @"app\" + textBox2.Text + ".txt"); 我的意思是我想在创建后立即将 textBox3 中的文本写入新创建的文本文件。但我不能这样做,因为它“被另一个进程使用”,这真的让我很烦。 正如 Jon Skeet 在他的回答中告诉你的那样,放弃File.Create(filename); 行,因为File.WriteAllText 已经在内部执行此操作。 WriteAllText 创建文件,写入文件,最后关闭。 【参考方案1】:

File.Create 返回一个FileStream,它将一直打开直到它被释放。

所以您可以只处理返回的值...但完全删除 File.Create 调用会更简单。如果该文件事先不存在,它将由File.WriteAllText 调用创建。

【讨论】:

对不起,我完全是个菜鸟,我怎么能用它来做同样的任务?请不要评判我,我还在学习 :) 我想从 textBox2 内容创建文件,然后将 textBox3 内容中的文本写入桌面上的 app 文件夹。 是的,这就是我的建议 - 只需删除代码行 File.Create(filename);。这就是你需要做的。它仍然会在下一行写入文件。 我只是在没有该部分的情况下尝试了它,并且没有创建文本文件。我只是删除了它,没有别的,它没有生成 .txt 文件。 您可能必须在桌面上按 F5 键(用于刷新)才能显示新文件。 该代码肯定会创建一个文件。

以上是关于创建后写入新的文本文件的主要内容,如果未能解决你的问题,请参考以下文章

python文本操作

Python入门教程第70篇 创建文本文件

Qt (C++):QFile 成功创建文本文件但不写入

python 在文件上运行clean函数 - 将输出文本写入新的csv

读取“readme.txt”中的文本,输出这段英文共有多少句。并创建一个新的文件“readme2.txt”?

如何从画布前的变量中写入文本?