IO异常未得到处理.进程无法访问该文件,因为它正在被使用
本文关键字:因为 文件 访问 异常 处理 进程 IO | 更新日期: 2023-09-27 18:27:49
我写了一个程序,代码似乎可以工作,但它不工作。它给出IO异常是未处理的错误。有些人说,你们应该删除一些东西,因为程序试图在同一时间使用相同的文件。请帮帮我!!
namespace App1508
{
public partial class Form2 : Form
{
string goodDir = "C:''GOOD''";
string badDir = "C:''BAD''";
string fromDir = "C:''DENEME''";
List<Image> images = null;
int index = -1;
FileInfo[] finfos = null;
public Form2()
{
InitializeComponent();
DirectoryInfo di = new DirectoryInfo(@"C:'DENEME");
finfos = di.GetFiles("*.jpg",SearchOption.TopDirectoryOnly);
images = new List<Image>();
foreach (FileInfo fi in finfos)
{
images.Add(Image.FromFile(fi.FullName));
}
}
private void button1_Click(object sender, EventArgs e)
{
finfos[index].MoveTo(Path.Combine("C:''GOOD", finfos[index].Name));
}
private void pictureBox1_Click(object sender, EventArgs e)
{
index++;
if (index < 0 || index >= images.Count)
index = 0;
pictureBox1.Image = images[index];
}
private void button2_Click(object sender, EventArgs e)
{
finfos[index].MoveTo(Path.Combine("C:''BAD", finfos[index].Name));
}
}
}
这就是问题所在:
foreach (FileInfo fi in finfos)
{
images.Add(Image.FromFile(fi.FullName));
}
Image.FromFile
将打开一个文件句柄,在处理完图像之前不会关闭它。您试图移动文件,而不处理先打开该文件的图像。
我怀疑,如果您在button1_Click
和button2_Click
方法中处理相关图像(请注意,如果它显示在PictureBox
中,您需要首先将其删除),您会发现它是有效的。
参考编号:http://support.microsoft.com/?id=814675