我有一个问题,我昨天做的文件查找功能,用于返回文件的方法,但它总是返回null,所以我改变它返回文件路径,它仍然返回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?在返回字符串之前,它会将其打印出来,而且我们可以看到它不是空的,所以出了什么问题?
答案 0 :(得分:1)
从null
返回您在控制台中获得的lookupFile()
(代码最终到达最终的return null
语句)。调试方法,看看为什么会发生这种情况,请查看if / else条件。
答案 1 :(得分: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;
}
答案 2 :(得分: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;
}