java.io.FileNotFoundException: доступ запрещен на Image.IO.write

Я обрезаю изображения размером 64x128 пикселей в сетках 4x8 и 8x16 и сохраняю их во временной папке, чтобы извлечь из них функции для классификации изображений. Пока я делаю это в цикле для нескольких изображений (я обрезаю первое изображение, получаю части изображения 8x16, извлекаю функции для каждого части изображения, перемещаюсь к следующему изображению и перезаписываю существующие части изображения), я получаю исключение «Файл не найден» в случайной сетке ячейки, потому что доступ запрещен для указанной ячейки сетки. Это происходит только при работе с большим количеством (скажем, 20+) изображений. Как я могу обойти это?

Мой код для части обрезки:

package imageProcess;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Crop_Raster {

BufferedImage src;
BufferedImage dst;


public Crop_Raster(BufferedImage src) {
    super();
    this.src = src;
}

public void cropImage_4x8() throws IOException{
    int filenumber = 1;
    for (int y = 0;y<4;y++){
        for (int x = 0; x<8;x++){
            File output = new File("Temp/"+filenumber+".jpg");
            dst = src.getSubimage(16*x,16*y, 16, 16);   
            ImageIO.write(dst, "jpg", output);
            filenumber ++;
        }
    }
}

public void cropImage_8x16() throws IOException{
    int filenumber = 1;
    for (int y = 0;y<8;y++){
        for (int x = 0; x<16;x++){
            File output = new File("Temp/"+filenumber+".jpg");
            dst = src.getSubimage(8*x,8*y, 8, 8);   
            ImageIO.write(dst, "jpg", output);
            filenumber ++;
        }
    }
}

Я получаю следующее исключение, происходящее при обработке второго фрагмента моего 6-го тренировочного изображения:

java.io.FileNotFoundException: Temp\2.jpg (Zugriff verweigert)
at java.io.RandomAccessFile.open0(Native Method)
at java.io.RandomAccessFile.open(Unknown Source)
at java.io.RandomAccessFile.<init>(Unknown Source)
at javax.imageio.stream.FileImageOutputStream.<init>(Unknown Source)
at com.sun.imageio.spi.FileImageOutputStreamSpi.createOutputStreamInstance(Unknown Source)
at javax.imageio.ImageIO.createImageOutputStream(Unknown Source)
at javax.imageio.ImageIO.write(Unknown Source)
at imageProcess.Crop_Raster.cropImage_8x16(Crop_Raster.java:38)
at svm.CreateVektor.createVector_8x16(CreateVektor.java:94)
at Main_Test.main(Main_Test.java:107)

Ошибка возникает во время обрезки, остальные мои методы должны работать нормально.


person T A    schedule 28.03.2017    source источник


Ответы (1)


Очистка папки Temp после каждого изображения устранила проблему.

person T A    schedule 28.03.2017