public static Boolean SaveImage(RenderedImage image, String savePath) {
Boolean reg = true;
File file = new File(savePath);  
File outputFileDirectory = new File(file.getParent().replace('\\', '/'));  
ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
if(!outputFileDirectory.exists())
{
outputFileDirectory.mkdirs();
}        
         ImageIO.write(image, "jpg", file);  
         byte[] buffer = baos.toByteArray();  
         FileOutputStream fs = new FileOutputStream(file);
         fs.write(buffer, 0, buffer.length);
         baos.close();
         fs.flush();
         fs.close();
} catch (IOException e) {
e.printStackTrace();
reg = false;
return reg;
}
        return reg;
}
代码就是这样的,文件生成了,但是删除的时候,删不掉,什么情况,怎么解决。

解决方案 »

  1.   

     byte[] buffer = baos.toByteArray();  
                FileOutputStream fs = new FileOutputStream(file);
                fs.write(buffer, 0, buffer.length);
    你这样一直在写,当然关不掉了。
      

  2.   

    亲,应该怎么改呢,java里面貌似没有.net里面的using关键字,能给出具体的方法吗,谢谢啊
      

  3.   

    我刚才把关闭流的操作放到finally里面试了下,还是不行
      

  4.   


    int len = 0;
    byte[] buffer = new byte[1024];
    while ((len = inputStream.read(buffer)) > 0) {
    out.write(buffer, 0, len);
    }
      

  5.   

    FileOutputStream fs = new FileOutputStream(file);
             fs.write(buffer, 0, buffer.length);
             baos.close();
             fs.flush();
             fs.close();
    这段代码感觉是多余的,ImageIO.write(image, "jpg", file);  这句应该就能写了。你去掉这部分试试吧
      

  6.   

    使用 ImageIO.write 的另一个重载方法,传进一个流,调用后自己把流关闭。