Вы, кажется, находитесь на правильном пути. Только вещь listFiles()
возвращает File[]
не String[]
Может быть, попробовать что-то вроде этого
File file = new File(filename);
File[] files = new File[0]; // initialize
if (file.isDirectory()){
files = file.listFiles(); // populate
}
int fileIndex = new Random().nextInt(files.length); // get random index
Image img = new ImageIcon(files[fileIndex]).getImage(); // create image
Хотя выше, может работать, то рекомендуется использовать URL для встроенных ресурсов, а не файлы. Что-то вроде этого
String[] filenames = file.list(); // list returns String
int fileIndex = new Random().nextInt(filenames.length);
Image img = null;
java.net.URL url = MyClass.class.getResource(filenames[fileIndex]);
if (url != null){
img = new ImageIcon(url).getImage();
} else {
img = null;
}
При использовании class.gerResource()
. Файл будет искать в местоположении файлов классов. Вы можете также изменить путь немного, если вы хотите, файл структура, как этот
ProjectRoot
bin
MyClass.class
images
image1.png
image2.png
src
Затем вы можете использовать этот код
java.net.URL url = MyClass.class.getResource("images/" + filenames[fileIndex]);
Есть только файлы (никаких других каталогов) в каталоге? –
Что случилось с псевдокодом, который у вас выше? Похоже, что он должен работать, помимо того факта, что 'listFiles' возвращает массив объектов' File', а не 'String' –
@peeskillet: Есть несколько других каталогов, но мне все равно, являются ли они/aren Включено. Кроме того, меня не беспокоит, что psuedocode является неправильным, я просто не совсем понимаю, как его поместить в Java-код. – Derpster13