c#如何释放文件控制

yinrongg 2009-06-27 05:48:44
我用以下代码写了创建并写入的 文本文件
  internal  bool SaveText(string textInfo, string path)
{
try
{ File.AppendAllText(path, textInfo + "\r\n", Encoding.GetEncoding("gb2312")); }
catch (Exception err)
{

MessageBox.Show(err.Message);
return false;
}
return true;
}

之后我想马上对该文件进行删除 用
FileInfo fileInfo = new FileInfo(filePath);
try
{
fileInfo.Delete();
}
catch(Exception err)
{
MessageBox.Show(err.Message);
}

老提示文件被另一线程占用,删除不成功,请问怎么释放控制呢?弄了好久...郁闷ing
...全文
1094 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinrongg 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 feifeiyaqi3 的回复:]
fileInfo.Delete();
fileInfo.close();
[/Quote]


fileInfo根本就没有close 方法,别忽悠我撒
yinrongg 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
通过多线程操作文件,删除时关闭操作文件的进程
[/Quote]

关闭进程也没有用,我用的是Abort()方法关闭,后来使用 GC.Collect()强制回收才解决的。
xm18love 2009-06-27
  • 打赏
  • 举报
回复
任何对文件的操作都是要关闭的,尤其是在写入流的时候,文件是不能删除的。只有将控制释放之后才可以。每一个写入操作应该都有Close()方法来使这个操作停止。
mb_1985 2009-06-27
  • 打赏
  • 举报
回复
必须先进行close()
zfc1978 2009-06-27
  • 打赏
  • 举报
回复
测试:
File.AppendAllText("c:\\1.doc", "hahaha");
File.Delete("c:\\1.doc");
这样是成功的!没有出现线程占用的问题,你是否是在append了以后又做了什么占用方式的打开操作,然后没有关闭释放?
zfc1978 2009-06-27
  • 打赏
  • 举报
回复
用File.Delete()试试看
feifeiyaqi3 2009-06-27
  • 打赏
  • 举报
回复
fileInfo.Delete();
fileInfo.close();
wuyq11 2009-06-27
  • 打赏
  • 举报
回复
通过多线程操作文件,删除时关闭操作文件的进程

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧