JAVA 如何把一个局部变量(Map类型的)的值, 取出来返回给调用者?

JAVA如何把一个局部变量(Map类型的)的值,取出来返回给调用者?我的方法如下://递归遍历给定文件夹下所有的子文件夹和文件,把所得的结果放入Map中并返回public... JAVA 如何把一个局部变量(Map类型的)的值, 取出来返回给调用者?
我的方法如下:
// 递归遍历给定文件夹下所有的子文件夹和文件,把所得的结果放入Map中并返回
public Map<String, String> iterateFolder(File rootFolder, int level, String month) {
Map<String, String> strMap = new HashMap<String, String>();
if (!rootFolder.isDirectory()) {
System.out.println(rootFolder.getName() + " is not a directory! ");
} else {
String filesFullName[] = new String[1000];
String months = "";
File dirList[] = rootFolder.listFiles();
for (int i = 0; i < dirList.length; i++) {
for (int j = 0; j <= level; j++) {
// System.out.print("-Level-" + level);
}
if (dirList[i].isDirectory()) {
// System.out.println(": <" + dirList[i].getName() + "> ");
level++;
iterateFolder(dirList[i], level, month);
level--;
} else if (dirList[i].isFile() && dirList[i].getName().endsWith(".log")) {
months = dirList[i].getName().substring(dirList[i].getName().lastIndexOf("_") + 1);
if (!"".equals(month) && months.substring(0, 6).equals(month)) {
// System.out.println("The File>>> " + rootFolder + "\\" + dirList[i].getName());
strMap.put(filesFullName[i], rootFolder + "\\" + dirList[i].getName());
System.out.println(strMap.get(filesFullName[i]));
}
}
}
}
if(strMap != null){
return strMap;
}else{
return null;
}
}
可是 我在当前类下的main方法中调用时,发现返回的strMap 这个Map始终为空值,各位高手,能不能告诉小弟,到底是怎么回事呢?我想返回这个值,以便后续处理。
展开
 我来答
fylsh
2011-08-02 · TA获得超过950个赞
知道小有建树答主
回答量:1472
采纳率:0%
帮助的人:1041万
展开全部
你的方法中用了递归,所以要注意变量的恰当使用。
Map<String, String> strMap = new HashMap<String, String>();这句只要出现递归情况都会执行一次,这样strMap 就会不断引用到新建的HashMap,有一种情况,如果递归遍历中出现的最后一次是一个文件夹并且这个文件夹是空的,那么strMap引用到的HashMap(strMap = new HashMap<String, String>();)就会是空的,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式