Изменение доступа к файлу для работы с произвольными именами файлов - PullRequest
0 голосов
/ 07 января 2019

Я получаю несколько изображений в папке изображений для обработки. В настоящее время у меня есть только 1 строка кода:

im = new ImageIcon("Images/"+imageindex+".gif"); \\(1)

вместе с переменной imageindex и другой переменной (imagecount), отслеживающей количество изображений. Тем не менее, это заставляет меня называть мои изображения "0.gif", "1.gif", ... "(n-1) .gif", если я хочу, чтобы в папке было n изображений, и каждый раз настраивал их соответствующим образом. добавить новое изображение.

Мне интересно, есть ли какой-нибудь способ выбрать i-е изображение в папке «Изображения», предпочтительно с помощью метода, который не требует создания массива изображений для доступа к массиву (поскольку это будет пустой тратой) ; изображения уже есть, и повторное копирование их в более удобный формат для доступа к ним замедлит мою программу).

Редактировать: вот решение, которое не кажется оптимальным. Это то, о чем я говорил, когда упоминал о создании всего массива:

Добавьте следующее к объявлению двух переменных:

File folder = new File("Images");
File[] listOfFiles = folder.listFiles();

Заменить (1) на

im = new ImageIcon("Images\\"+listOfFiles[imageindex].getName()); \\(2)

Проблема в том, что создание всего массива только для доступа к именам файлов кажется медленным.

Обновление: я делал преобразование из ImageIcon в Image в BufferedImage, и в конечном процессе использовалось только буферизованное изображение. Оказывается, проще использовать

        try {
            bimg = ImageIO.read(listOfFiles[imageindex]);
        } catch(IOException e) {
        }  

, что исключает использование изображений и значков изображений в целом. Однако это по-прежнему не решает основную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...