为什么我的getString()方法总是返回null?
问题描述:
我有一个文件查找功能,我昨天做了一个问题,该方法用于返回一个文件,但它总是返回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,所以出了什么问题?
答
通过添加新功能和静态变量,像这样固定的:
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;
}
答
您在控制台中获得的null
由lookupFile()
(代码最终得到最终的return null
语句)返回。调试方法,看看为什么发生,通过你的if/else条件。
答
尝试这样
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;
}
邮报满级更清晰。 – 2014-10-30 09:42:23
你有权访问调试器吗?你可以放置一个断点,看看哪里出错了,为什么你的方法返回null?是你的'列表'null,即file.listFiles()返回null?如果我坦率地说,这些问题是毫无意义的。他们不会教你任何东西,也没有人能够帮助你。您需要放置断点,查看究竟发生了什么,然后确定事情发生错误的地方以及如何解决问题。 – kha 2014-10-30 09:46:04
@kha列表不为空,你可以看到,在它返回“g”之前它会打印出来,而且你可以在输出中看到它不是null,但是当我打印函数返回的值时,它是空值。 – ABOODYFJ 2014-10-30 09:49:08