我创建了一个最小的表单示例,但仍然出现错误。
private void button1_Click(object sender, EventArgs e)
{
string SourceFolder = ImageFolderTextBox.Text;
string FileName = "";
DirectoryInfo Mydir = new DirectoryInfo(SourceFolder);
FileInfo[] JPEGS = Mydir.GetFiles("*.jpg");
for (int counter = 0; counter < JPEGS.Count(); counter++)
{
FileName = Mydir + "\\" + JPEGS[counter].Name;
using (FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
StatusBtn.BackColor = Color.Green;
}
}
}
我尝试了使用Image.FromFile()的注释行以及使用FileStream()的行。两者都产生了文件错误。
Image.FromFile()的错误是:
System.OutOfMemoryException: '内存不足'
FileStream()的错误是:
System.UnaurthorizedAccessException: '拒绝访问路径'E:\DCIM\100Canon\dsc_7218.jpg'。
我在产生错误的代码行之前放置了一个断点,我能够使用Windows图像查看器打开图像文件。然后我关闭了查看器,在我进入下一行并得到错误之后,我不能再使用Windows查看器查看图像。相反,我收到一个消息,告诉我没有权限访问该文件。我可以删除该文件。
这个错误是可重复的。我已经做了10多次。每次,在我得到错误之后,我都会删除用于FileName的文件。
所有文件都被验证为非损坏。
我原来使用的Image.FromFile()代码在2年前编译时运行良好。实际上,.exe文件也可以正常运行。我在代码的其他地方进行了微小的更改,但惊讶地发现,如果没有这个错误,代码将无法编译。根据此页面上的信息,我尝试了FileStream()方法。