在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());
祝你好運。
嘗試將路徑放在引號中的圖標所在的目錄中。 – 2012-03-05 00:15:36
我不確定你的問題是什麼。您發佈的代碼將「圖標」目錄中的所有文件的名稱作爲數組返回。問題是:「我如何閱讀每個文件的內容?」 – jacobm 2012-03-05 00:16:31
又是什麼問題? – 2012-03-05 00:17:27