В Java класс File
необязательно представляет «существующий» файл в файловой системе.Например:
File f = new File("some_unknown_unexisting_file.bob");
System.out.println(f.exists()); // most likely will print 'false'
Также класс разрешает файл из текущего рабочего каталога.Вы можете получить этот каталог с
System.out.println(new File(".").getAbsolutePath());
. В вашем случае, если вы можете, я бы предложил получить массив File[]
с:
File[] files = new File("icons").listFiles(new FileFilter() {
@Override
public boolean accept(File f) {
return !f.isDirectory() && f.canRead();
}
});
for (File f : files) {
System.out.println(f.getAbsolutePath());
}
, который будет возвращать массив File
объекты, которые не являются папками и которые вы можете открыть для чтения (обратите внимание, что это не всегда так, но в вашем случае это нормально).
Но если у вас есть для использованияlist()
, то это эквивалентно:
File parent = new File("icons");
String[] fileStr = parent.list(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
File f = new File(dir, name);
return !f.isDirectory() && f.canRead();
}
});
for (String f : fileStr) {
System.out.println(new File(parent, f).getAbsolutePath());
}
Кроме того, с вашим списком файлов (String[]
) вы можете создать значок, используя:
String filename = fileStr[i]; // some file name within the array
ImageIcon icon = new ImageIcon("icons" + File.separator + filename);
илисписок файлов (File[]
), он чище:
File file = files[i]; // some file within the File[] array
ImageIcon icon = new ImageIcon(file.getAbsolutePath());
Удачи.