大家看下这段代码有什么问题!
[code="java"]
public Map soureFile(String sourePath) {
Map map = new java.util.HashMap();
File dir = new File(sourePath);
File[] files = dir.listFiles();
if (files == null){
return map;
}
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
soureFile(files[i].getAbsolutePath());
} else {
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
map.put(files[i], strFileName);
}
}
return map
}
[/code]
但是 我取 map的时候发现 map.size()==0 这是为什么啊!
[b]问题补充:[/b]
大家看下这段代码有什么问题!
[code="java"]
public Map soureFile(String sourePath) {
Map map = new java.util.HashMap();
File dir = new File(sourePath);
File[] files = dir.listFiles();
if (files == null){
return map;
}
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
soureFile(files[i].getAbsolutePath());
} else {
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
map.put(files[i], strFileName);
}
}
return map;
}
[/code]
但是 我取 map的时候发现 map.size()==0 这是为什么啊!
[b]问题补充:[/b]
System.out.println();打印出来有东西啊!
晕啊,你新建的map都是个局部变量,
你用的又是递归的方式,自然永远也只会返回这个地方
应该这样,这个Map map = new java.util.HashMap(); 应该是从方法外面传进来
[code="java"]
public Map soureFile(Map map, String sourePath) {
File dir = new File(sourePath);
File[] files = dir.listFiles();
if (files == null){
return map;
}
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
soureFile(map,files[i].getAbsolutePath());
} else {
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
map.put(files[i], strFileName);
}
}
return map;
}
[/code]
你的打印语句能打印出来值吗
[code="java"]map.put(files[i], strFileName); [/code]这里你放入的值是strFileName这个变量应该是文件路径,key是File类型,错应该没有错,但是就是你取的时候map.get(key)里面的key就是得是文件对象File了!
晕啊,你新建的map都是个局部变量,
你用的又是递归的方式,自然永远也只会返回这个地方
应该这样,这个Map map = new java.util.HashMap(); 应该是从方法外面传进来
[code="java"]
public Map soureFile(Map map, String sourePath) {
File dir = new File(sourePath);
File[] files = dir.listFiles();
if (files == null){
return map;
}
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
soureFile(map,files[i].getAbsolutePath());
} else {
String strFileName = files[i].getAbsolutePath();
System.out.println("---" + strFileName);
map.put(files[i], strFileName);
}
}
return map;
}
[/code]
而且你取出来的应该是循环的最后一个值!