首页 新闻 会员 周边

File.Delete删除文件被占用问题

0
悬赏园豆:20 [已解决问题] 解决于 2018-09-04 10:27

程序是这么设计的:

1、首先用OpenFileDialog打开文件夹下的所有文件(图片类型)

2、根据打开的路径,遍历所有文件,存储到List<string>集合。

3、List<string>集合作为ListBox的数据源,显示文件列表

4、点击显示列表中文件路径,右边picBox显示图片,并读取图片中的条码。

5、把列表中的所有文件,copy到另外一个文件,原文件名用条码内容替换。

6、最后,删除原文件夹(OpenFileDialog打开文件夹)下所有图片文件.

 

1-5都实现了,就是最后一步(6),文件名copy且替换后,用File.Delete删除文件时,总提示原文件被占用。

百度了好多,都是千篇一律文件流的方法,using 、disPose了OpenFileDialog和picBOX,还是一样错误。

最后,下载的handle工具,检查占用的程序,居然是主程序名,想不明白,一kill了它,整个程序都干掉了。

各位大神支支招!

问题补充:

有关文件的4个地方:

1、openfiledialog :打开后,有用dispose了,不知道还有其它关闭方法?

2、ListBox:只是获取字符集,应该没关系

3、File.Copy:复制文件,这个不清楚

4、PicBox:确认己经关闭了

Luckyfish小文的主页 Luckyfish小文 | 菜鸟二级 | 园豆:335
提问于:2018-08-28 11:21

建议提供一下“遍历所有文件”与“copy到另外一个文件”的相关代码

dudu 5年前

@dudu: 遍历所有文件string[] subFiles = Directory.GetFiles(pathname);
foreach (string subFile in subFiles)
{
fileList.Add(subFile);
}
listBox1.DataSource = fileList;

Luckyfish小文 5年前

@dudu: 复制,直接用的File.Copy(原文件,新文件);

Luckyfish小文 5年前
< >
分享
最佳答案
0

试试先 Dispose OpenFileDialog ,然后删除文件

收获园豆:10
dudu | 高人七级 |园豆:30994 | 2018-08-28 13:17

有用,但是还报错

if(ofd.ShowDialog()==DialogResult.OK)
{
ImgDir.Text = ofd.FileName.Substring(0, ofd.FileName.Length - ofd.FileName.Substring(ofd.FileName.LastIndexOf("\\")).Length);
List<string> caeList = new List<string>();
GetFileNames(ImgDir.Text.Trim(), caeList);
//listbox得到文件路径后,释放打开的文件资源,否则之后无法删除原文件
caeList.Clear();
}
ofd.Dispose();

Luckyfish小文 | 园豆:335 (菜鸟二级) | 2018-08-28 13:42

@Luckyfish小文: 试试 File.Move

dudu | 园豆:30994 (高人七级) | 2018-08-28 13:53
其他回答(2)
0

可能是读取图片文件问题,打开的图片文件没有释放。具体要看你读取图片文件代码是怎么写的了,如果你用到了Image.FromFile,那十有八九问题就出在这里。

收获园豆:5
大豆男生 | 园豆:608 (小虾三级) | 2018-08-28 11:34

不是用formfile

后面改用文件流,还是一样,代码如下:

FileStream fs = new FileStream(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
MemoryStream ms = new MemoryStream(bytes);
Bitmap img = new Bitmap(ms);
pictureBox1.Image = img;

支持(0) 反对(0) Luckyfish小文 | 园豆:335 (菜鸟二级) | 2018-08-28 13:06

@Luckyfish小文: 这样读取图片也是没问题的

支持(0) 反对(0) 大豆男生 | 园豆:608 (小虾三级) | 2018-08-28 13:42
0

这明显就是文件打开没关闭的,请参考 《C# 入门》第三章第四节,文件操作。

收获园豆:5
爱编程的大叔 | 园豆:30839 (高人七级) | 2018-08-28 12:00

是指哪一块打开没关闭呢,openfiledialog还是 ,picbox显示的?

基本没过关,不好意思

支持(0) 反对(0) Luckyfish小文 | 园豆:335 (菜鸟二级) | 2018-08-28 13:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册