日期:2014-05-20  浏览次数:20695 次

为什么得不到指定目录下的所有文件名??
法一:
String path = MapGroupHandler.class.getClassLoader().getResource("map").getPath();
File file = new File(path);
String[] fileGroup = file.list();
for (int i = 0; i < fileGroup.length; i++) {
System.out.println(fileGroup[i]);
}
法二:
InputStream in = MapGroupHandler.class.getClassLoader().getResourceAsStream("map");
InputStreamReader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String str;
try {
while((str = br.readLine()) != null){
System.out.println(str);
}
} catch (IOException e) {
e.printStackTrace();
}

这两个方法都在Eclipse下都能得到src下map文件夹内的所有文件名,但是为什么在打包成jar后,移动到别的盘,再运行该jar,就得不到map文件夹内的所有文件名呢???(我是用Eclipse插件net.sf.fjep.fatjar_0.0.31.jar打包的,map文件夹有一起打包进jar的呀!)
文件名 file

------解决方案--------------------
方法一:
这个只可以读真实的目录结构,你JAR不是真实的目录结构
方法二:
这个虽然能读取真实的文件和JAR里面的文件,但是你的map是jar里面的目录,而不是文件

你只能
一:自己弄个索引文件,把所有文件路径记录在一个资源文件里面,然后用你前面的方法二遍历

二:参考http://stackoverflow.com/questions/1429172/how-do-i-list-the-files-inside-a-jar-file
获取当前JAR里面的所有文件路径,然后自己判断,哪个需要。