我有一個遞歸從文件夾中檢索圖片下面的方法:遞歸方法的工作,而調試,但得到的卡住
private Collection<Image> GetImages(File file) {
Collection<Image> result = new LinkedList<Image>();
if (file.isFile()) {
result.add(new Image(file));
return result;
}
for (File f : file.listFiles(new DirAndImagesFilter())) {
if (f.isDirectory()) {
{
result.addAll(GetImages(f));
}
} else {
result.add(new Image(f));
}
}
return result;
}
這裏是DirAndImageFilter代碼:
public class DirAndImagesFilter implements FileFilter {
private final static String jpeg = "jpeg";
private final static String jpg = "jpg";
private final static String gif = "gif";
private final static String tiff = "tiff";
private final static String tif = "tif";
private final static String png = "png";
public boolean accept(File file) {
if (file.isDirectory()) {
return true;
}
String extension = getExtension(file);
if (extension != null) {
if (extension.equals(tiff)
|| extension.equals(tif)
|| extension.equals(gif)
|| extension.equals(jpeg)
|| extension.equals(jpg)
|| extension.equals(png)) {
return true;
} else {
return false;
}
}
return false;
}
/*
* Get the extension of a file.
*/
static String getExtension(File f) {
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i + 1).toLowerCase();
}
return ext;
}
}
當我從Netbeans運行我的應用程序時,它工作正常,但是當我運行JAR文件(也由Netbeans生成)時。我的應用程序陷入這種方法。
據我瞭解,JAR文件應該與在Netbeans中運行的應用程序的行爲方式完全相同。或者我在這裏錯過了什麼?
你是對的,在一個罐子裏應該對邏輯沒有影響。我懷疑你看到的差異是由於當你通過IDE運行而運行jar時設置了不同的工作目錄。你可以發佈DirAndImagesFilter的實現嗎?此外,你應該使用file.list(新的DirAndImagesFilter()),因爲listFiles將只返回文件而不是目錄。 – Chris
您打印了嗎? System.getProperty(「user.dir」); 這兩個時間,看看你的工作目錄是什麼? – oguzalb
@Chris你對file.list是正確的。然而,listFiles爲我列出了文件和文件夾的奇怪事情! – Vitalij