我用C#写了一个控制台应用程序,它的功能是转换图片格式,并把原图片删除,求大神帮忙看看!!!

我希望的是先把jpg的图片转换为png格式,然后把原来的jpg图片删除,但格式转换成功了,原文件删除时提示文件被另一个进程占用,这个问题怎么解决?大神帮帮忙,谢谢!!!!具体代码如图所示。

1、多线程不是这么瞎搞的。。。。而且你这个控制台程序用一个线程就可以做了。

2、把原图读到流中,然后把流关闭

 string imgPath = @"D:\Code\01.png";
 string outputPath = @"d:\code\02.jpg";
 var stream = File.Open(imgPath,FileMode.Open);
 Image img = Image.FromStream(stream);
 stream.Close();
 img.Save(outputPath,ImageFormat.Jpeg);
 if (File.Exists(imgPath))
 {
   File.Delete(imgPath);
 }
 Console.WriteLine("转换完成");
 Console.ReadKey();

追问

抛出了异常,然后生成了一张0kb的png图片

追答

不要在C:/下操作, 一般的调试器都没有这个权限。
换到D盘或者其他非系统盘下。

追问

嗯,我换到了D盘,还是抛出这个异常,我之前用的Bitmap可以····

追答

我是VS2017,.NET4.6 , 可能老版本中需要先Save才能Close? 你试试把Stream.Close放到Save下面一行去,

追问

哈哈····我是VS2010,NET4,现在问题解决了,用Bitmap就行了。

追答

恩,解决就好

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-31
格式转换后图片还是打开状态,要关闭后才能删除追问

你这跟编程也没关联啊,我是想问问我的程序怎么改·······

第2个回答  2017-03-31
是因为没有资源释放就去删除造成的吧追问

嗯,应该是格式转换那里还没完成,就执行了删除操作。请问怎么控制啊?我的代码怎么改?

相似回答