C#创建.txt文件提示正由另一进程使用,因此该进程无法访问此文件。

weixin_38668767 2017-11-10 10:43:07
本人C#初学者一枚,如图,当我每次要创建.TXT文件时,System.IO.File.AppendText那行就会报错,文件被另一线程占用
...全文
1087 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wyDuang 2018-09-12
引用 1 楼 qq_25219331 的回复:
File.Create(filepath).Close();
感谢,解决了我的问题
  • 打赏
  • 举报
回复
weixin_38668767 2017-11-25
引用 4 楼 qq_25095899 的回复:
你这个代码有不太合理的地方 你用yyyyMMdd 做为文件名,然后又sleep 50 ,然后又继续用yyyyMMdd (而不是用之前的文件名) 假设 2017年11月12日 晚上23点59分59秒960毫秒 ,结果你sleep后,变成2017年11月13日了, 两个不同的文件了。 File.AppendAllText 是----“如果文件不存在的话 ,会自动创建”,所以你不需要做 “是否存在TXT,如果不存在就先创建 ” 的判断 你应该直接使用File.AppendAllText,不用那么麻烦
谢谢,已解决,忘记评论
  • 打赏
  • 举报
回复
njit_77 2017-11-13
应该是别的线程同时往里面写信息了。多线程不加锁容易出错
  • 打赏
  • 举报
回复
大然然 2017-11-13
你这个代码有不太合理的地方 你用yyyyMMdd 做为文件名,然后又sleep 50 ,然后又继续用yyyyMMdd (而不是用之前的文件名) 假设 2017年11月12日 晚上23点59分59秒960毫秒 ,结果你sleep后,变成2017年11月13日了, 两个不同的文件了。 File.AppendAllText 是----“如果文件不存在的话 ,会自动创建”,所以你不需要做 “是否存在TXT,如果不存在就先创建 ” 的判断 你应该直接使用File.AppendAllText,不用那么麻烦
  • 打赏
  • 举报
回复
Vito1993 2017-11-10
File.Create(filepath).Close();
  • 打赏
  • 举报
回复
白衣如花 2017-11-10
要看你的zisuo这个变量是否是静态的,即是否能保证每次判断的zisuo是否是同一个东西。 而且如果当前zisuo为false,你是否能等一下再写? 写日志一般用静态枷锁的方法,或者单独线程处理日志队列
  • 打赏
  • 举报
回复
c02645 2017-11-10
using (StreamWriter sw = new StreamWriter(txtPath, true, Encoding.Default)) { sw.WriteLine("追加记录------"); sw.Dispose(); sw.Close(); }
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-11-10 10:43
社区公告

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