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始终为空值,各位高手,能不能告诉小弟,到底是怎么回事呢?我想返回这个值,以便后续处理。 展开
 我来答
粟米范姜磊
2019-08-27 · TA获得超过3716个赞
知道大有可为答主
回答量:3077
采纳率:30%
帮助的人:223万
展开全部
你的方法中用了递归,所以要注意变量的恰当使用。
Map<String,
String>
strMap
=
new
HashMap<String,
String>();这句只要出现递归情况都会执行一次,这样strMap
就会不断引用到新建的HashMap,有一种情况,如果递归遍历中出现的最后一次是一个文件夹并且这个文件夹是空的,那么strMap引用到的HashMap(strMap
=
new
HashMap<String,
String>();)就会是空的,
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式