2014-10-30 225 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; 
} 
相关问题