创建后写入新的文本文件
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 在文件上运行clean函数 - 将输出文本写入新的csv