2014-10-30 301 views
-3

我有一個文件查找功能,我昨天做了一個問題,該方法用於返回一個文件,但它總是返回null,所以我改變它返回文件路徑,它仍然返回null即使它不是,這裏是代碼和輸出:爲什麼我的getString()方法總是返回null?

public static String lookupFile(File file, String name) { 
    File[] list = file.listFiles(); 
    if(list != null) { 
     for (File fil : list) { 
      String n = fil.getName().replace(name, ""); 
      if (n.length() != 0) { 
       if(fil.isDirectory()) 
        lookupFile(fil , name); 
      } else if (n.length() == 0) { 
       String g = fil.toPath().toString(); 
       System.out.println(fil.getName()); 
       System.out.println(g); 
       return g; 
      } 
     } 
    } 
    return null; 
} 

的方法,我使用它是像這樣:

String n = Sys.lookupFile(new File(Sys.getAppData() + "g/"), "ggf.rtf"); 
     System.out.println(n); 

輸出是這樣的:

ggf.rtf 
C:\Users\NAME\AppData\Roaming\g\h - Copy (5) - Copy\h - Copy (5)\ggf.rtf 
null 

爲什麼它返回後變爲null?在返回字符串之前,它將它打印出來,並且我們可以看到它不是null,所以出了什麼問題?

+2

郵報滿級更清晰。 – 2014-10-30 09:42:23

+0

你有權訪問調試器嗎?你可以放置一個斷點,看看哪裏出錯了,爲什麼你的方法返回null?是你的'列表'null,即file.listFiles()返回null?如果我坦率地說,這些問題是毫無意義的。他們不會教你任何東西,也沒有人能夠幫助你。您需要放置斷點,查看究竟發生了什麼,然後確定事情發生錯誤的地方以及如何解決問題。 – kha 2014-10-30 09:46:04

+0

@kha列表不爲空,你可以看到,在它返回「g」之前它會打印出來,而且你可以在輸出中看到它不是null,但是當我打印函數返回的值時,它是空值。 – ABOODYFJ 2014-10-30 09:49:08

回答

0

通過添加新功能和靜態變量,像這樣固定的:

private static String gg = null; 

public static File lookup(File file, String name) { 
    gg = null; 
    return new File(lookupFile(file, name)); 
} 

private static String lookupFile(File file, String name) { 
    File[] list = file.listFiles(); 
    if(list != null) { 
     for (File fil : list) { 
      String n = fil.getName().replace(name, ""); 
      if (n.length() != 0) { 
       if(fil.isDirectory()) 
        lookupFile(fil , name); 
      } else if (n.length() == 0) { 
       String g = fil.toPath().toString(); 
       System.out.println(fil.getName()); 
       System.out.println(g); 
       gg = g; 
       return gg; 
      } 
     } 
    } 
    return gg; 
} 
1

您在控制檯中獲得的nulllookupFile()(代碼最終得到最終的return null語句)返回。調試方法,看看爲什麼發生,通過你的if/else條件。

0

嘗試這樣

public static String lookupFile(File file, String name) { 
    File[] list = file.listFiles(); 
    String returnValue = null; 
    if(list != null) { 
     for (File fil : list) { 
      String n = fil.getName().replace(name, ""); 
      if (n.length() != 0) { 
       if(fil.isDirectory()) 
        returnValue = lookupFile(fil , name); 
      } else if (n.length() == 0) { 
       String g = fil.toPath().toString(); 
       System.out.println(fil.getName()); 
       System.out.println(g); 
       return g; 
      } 
     } 
    } 
    return returnValue; 
} 
相關問題