JAVA遍历一个文件夹内的子文件夹,并区分文件夹和子文件夹 JAVA遍历一个文件夹内的子文件夹(子文件夹内还有多个子文件夹),并区分文件夹和子文件夹,放到map里,再把父文件夹和子文件夹全部取出来。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 File.listFile();File.isDiretory(); 我写的遍历文件夹的代码,public void seekFiles(String strName) { File outFile = new File(strName); if (outFile.isDirectory()) { System.out.println(outFile.getName()); String[] fileNames = outFile.list(); for (int i = 0; i < fileNames.length; i++) { ListFile.seekFiles(outFile.getPath() + "\\" + fileNames[i]); } } else { System.out.println("No file"); } }关键是怎样分文件夹和子文件夹放到Map里面? 我知道用递归,而且都遍历出来了,关键是怎样区分文件夹和子文件夹,然后放到Map里面,再取出来? import java.io.File;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.Map;import java.util.TreeMap;import java.util.Map.Entry;public class GetDirectory{ public static TreeMap<File, LinkedList<File>> dirFiles = new TreeMap<File, LinkedList<File>>(); static void getDirectoryFiles(File dir) { if (!dir.isDirectory()) { return; } LinkedList<File> files= new LinkedList<File>(); File[] filesinDir = dir.listFiles(); if(filesinDir.length > 0) { for (int i = 0; i < filesinDir.length; i++) { files.add(filesinDir[i]); } } else { dirFiles.put(dir, null); return; } dirFiles.put(dir, files); for(int i = 0; i < filesinDir.length; i++) { if (filesinDir[i].isDirectory()) { getDirectoryFiles(filesinDir[i]); } } } /** * @param args */ public static void main(String[] args) { GetDirectory.getDirectoryFiles(new File("src")); //Iterator<Entry<File, LinkedList<File>>> iterator = GetDirectory.dirFiles.entrySet().iterator(); Iterator<File> iterator = GetDirectory.dirFiles.keySet().iterator(); while (iterator.hasNext()) { File dir = iterator.next(); System.out.println(dir.getAbsolutePath()); LinkedList<File> fileInDir = GetDirectory.dirFiles.get(dir); if (fileInDir != null) { Iterator<File> it = fileInDir.iterator(); while (it.hasNext()) { System.out.println(it.next().getAbsolutePath()); } } } }} import java.io.File;public class ListFile{ public static void listFile(File file) throws Exception { //如果输入的是一个文件就直接将文件的全路径直接打印出来 if (file.isFile()) { System.out.println("File :" + file.getAbsolutePath()); } else { System.out.println("Dir :" + file.getAbsolutePath()); File[] files = file.listFiles(); for(int i = 0; i < files.length; i++) { listFile(files[i]); } } }注:如果是一个目录就递归调用 listFile ubuntu12.04下安装jdk 关于初始化引用的疑问 请教高手,用java如何将UTF-8字符转成GBK编码格式 关于Jtable中添加行 怎样设置背景图片??? 数据库高手请进、分地区 排行统计 我的时间被谁偷走了? 关于字符集转换的问题,欢迎精通这方面的高手参与讨论 看了two weeks Thinking in java,看不大懂啊! 关于String初始化的问题 做网络爬虫遇到的问题 总是迷惑不解,请教达人
File.isDiretory();
public void seekFiles(String strName) {
File outFile = new File(strName);
if (outFile.isDirectory()) {
System.out.println(outFile.getName());
String[] fileNames = outFile.list();
for (int i = 0; i < fileNames.length; i++) {
ListFile.seekFiles(outFile.getPath() + "\\" + fileNames[i]);
}
} else {
System.out.println("No file");
}
}关键是怎样分文件夹和子文件夹放到Map里面?
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;
public class GetDirectory
{
public static TreeMap<File, LinkedList<File>> dirFiles = new TreeMap<File, LinkedList<File>>();
static void getDirectoryFiles(File dir)
{
if (!dir.isDirectory())
{
return;
}
LinkedList<File> files= new LinkedList<File>();
File[] filesinDir = dir.listFiles();
if(filesinDir.length > 0)
{
for (int i = 0; i < filesinDir.length; i++)
{
files.add(filesinDir[i]);
}
}
else
{
dirFiles.put(dir, null);
return;
}
dirFiles.put(dir, files);
for(int i = 0; i < filesinDir.length; i++)
{
if (filesinDir[i].isDirectory())
{
getDirectoryFiles(filesinDir[i]);
}
}
} /**
* @param args
*/
public static void main(String[] args)
{
GetDirectory.getDirectoryFiles(new File("src"));
//Iterator<Entry<File, LinkedList<File>>> iterator = GetDirectory.dirFiles.entrySet().iterator();
Iterator<File> iterator = GetDirectory.dirFiles.keySet().iterator();
while (iterator.hasNext())
{
File dir = iterator.next();
System.out.println(dir.getAbsolutePath());
LinkedList<File> fileInDir = GetDirectory.dirFiles.get(dir);
if (fileInDir != null)
{
Iterator<File> it = fileInDir.iterator();
while (it.hasNext())
{
System.out.println(it.next().getAbsolutePath());
}
}
}
}}
public class ListFile
{
public static void listFile(File file) throws Exception
{
//如果输入的是一个文件就直接将文件的全路径直接打印出来
if (file.isFile())
{
System.out.println("File :" + file.getAbsolutePath());
}
else
{
System.out.println("Dir :" + file.getAbsolutePath());
File[] files = file.listFiles();
for(int i = 0; i < files.length; i++)
{
listFile(files[i]);
}
}
}
注:如果是一个目录就递归调用 listFile