C# System.IO.IOException正在创建文件
如果在新创建的文件中写入内容,则会出现错误 这是我的代码:C# System.IO.IOException正在创建文件,c#,windows,winforms,file-writing,C#,Windows,Winforms,File Writing,如果在新创建的文件中写入内容,则会出现错误 这是我的代码: private void ButtonClick(object sender, EventArgs e) { Button b = (Button)sender; string inputKey = b.Text; for (int i = 0; i < tunes.Length; i++) {
private void ButtonClick(object sender, EventArgs e)
{
Button b = (Button)sender;
string inputKey = b.Text;
for (int i = 0; i < tunes.Length; i++)
{
if (b.Text == tun[i].TuneName)
{
Console.Beep(tun[i].Frequency, 200);
Input.Items.Add(b.Text);
Output.Items.Add(tun[i].TuneName);
if (startButtonPressed == true)
{
filename2 = musicFileName + ".csv";
File.WriteAllText(filename2, tun[i].TuneName);
RecordList.Items.Add(tun[i].TuneName);
}
}
}
}
private void按钮单击(对象发送方,事件参数e)
{
按钮b=(按钮)发送器;
字符串inputKey=b.文本;
for(int i=0;i
错误出现在第行:File.WriteAllText()。。。
它说该文件不能使用,因为它被另一个进程使用,但是我没有打开任何文件。您需要确保变量
filename2
包含一个有效路径,如C:\temp\myfile
,而不仅仅是myfile
。此外,如果无法访问该位置,您可能需要以提升的权限运行visual studio 您也可以使用streamwriter
using (StreamWriter writer =new StreamWriter(musicFileName + ".csv";))
{
writer.Write(tun[i].TuneName);
}
我会使用由
File.Create()
生成的Filestream,但我会在using语句中进行循环,这样您就可以确保在最后释放所有的资源(这就是为什么您使用using
)
您实际遇到的问题是,您从未关闭过文件。你应该抬头看看。它只能用于实现接口的类。然后,它将使用块在
末尾调用disponse()
,所有资源都将被释放,例如文件将被关闭。它是否在Excel或其他编辑器中打开?您的musicFileName是否包含路径?使用Path类创建正确的路径、文件名和扩展名。您尚未定义musicFileName
;它是什么?如果它是全局的,那么应用程序中的任何东西都可以打开它。我已经用另一种形式定义了musicFileName,并将值赋给了Form1,如果您能多解释一下您的变量,那就太好了,尤其是如果您使用自创建的类型,并且不显示它们的话。如果您删除不必要的代码,例如Console.Beep(),这显然与您的问题无关,这也会使您的代码更容易理解。请尝试创建一个新文件,并确保您拥有对该文件的写入权限。也许重新启动计算机以确保没有进程绑定到其中?好吧,对于您发布的代码来说,这似乎不是一个问题。您是否在代码中的其他位置打开该文件,从而使其保持打开状态。你是在第一次迭代还是第二次迭代时发现这个错误的?我在另一个表单中创建了这个文件,我给了另一个表单名称的值,然后我关闭了我创建的表单。
using (FileStream fs = File.Create(Path.Combine(musicFileName, ".csv")))
{
foreach (tun in tunes)
{
fs.Write(tun.TuneName);
}
}