我正在使用文件流创建一个文件,但在此之前我正在申请if条件以查看文件是否存在。当我点击按钮时,如果有文件,则删除该文件。没关系,如果我按下按钮,文件就会被创建。第一次运作良好。
现在文件已经创建了,如果我按下按钮它应该删除,但它正在显示一个异常,说* 该进程无法访问文件'C:\ Hello1',因为它被另一个人使用过程 *
以下是我的代码
private void button2_Click(object sender, EventArgs e)
{
string fileName = @"C:\Hello1";
if
(File.Exists(fileName))
{
File.Delete(fileName);
MessageBox.Show("File is deleted");
}
else
{
FileInfo createFile = new FileInfo(fileName);
FileStream create = createFile.Create();
MessageBox.Show("Created");
}
}
那么为什么我无法再次删除,我的文本文件也没有打开,但仍显示异常。
答案 0 :(得分:3)
您永远不会关闭创建该文件的流。将FileStream
放入using
语句中,这将自动清理打开的文件句柄。
using(FileStream create = createFile.Create())
{
//code here
}
答案 1 :(得分:2)
第二次尝试时,文件流仍然打开,请尝试:
private void button2_Click(object sender, EventArgs e)
{
string fileName = @"C:\Hello1";
if
(File.Exists(fileName))
{
File.Delete(fileName);
MessageBox.Show("File is deleted");
}
else
{
FileInfo createFile = new FileInfo(fileName);
using(FileStream create = createFile.Create())
{
MessageBox.Show("Created");
}
}
}
答案 2 :(得分:0)
哦,是的,我得到了答案,
我需要使用
private void button2_Click(object sender, EventArgs e)
{
string fileName = @"C:\Hello1";
if
(File.Exists(fileName))
{
File.Delete(fileName);
MessageBox.Show("File is deleted");
}
else
{
FileInfo createFile = new FileInfo(fileName);
FileStream create = createFile.Create();
MessageBox.Show("Created");
create.Close();
}
}
我们需要使用create.Close();
答案 3 :(得分:0)
以下是我用来编写本地日志的示例:
StreamWriter log;
string fpath = string.Format(@"{0}\{1}.txt",GetDirectory(),DateTime.Now.ToString("yyy-MM-dd"));
if (!File.Exists(fpath))
{
log = new StreamWriter(fpath);
}
else
{
log = File.AppendText(fpath);
}
log.WriteLine(string.Format("{0} ==> {1}",DateTime.Now.ToString("MM/dd/yyy HH:mm:ss"), Message));
log.Dispose();
log = null;