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

操作文件的小问题
请问在a文件夹中有a1,a2,a3三个文件夹,每个文件夹中又有5个文件夹分别为
a11……a15;a21……a25;a31……a35,下面的每个文件夹中有一些文件,怎么编写程序可以遍历所有文件夹进入到每个底层文件夹中如a11中,再调用程序处理?


------解决方案--------------------
和你的要求差不多。也是遍历c盘下的所有文件


import java.io.*;

public class FindDirectories
{
public static void main(String[] args)
{
// if no arguments provided, start at the parent directory
FindDirectories.FindFiles(new String[]{ "c:\\ "});


}
public static void FindFiles(String[]str)
{
if (str.length ==0) str = new String[]{ ".. "};
try
{
File pathName = new File(str[0]);
if (pathName.exists() )
{
String[] fileNames = pathName.list();

// enumerate all files in the directory
for (int i = 0; i < fileNames.length; i++)
{
File f = new File(pathName.getPath(), fileNames[i]);

// if the file is again a directory, call the main method recursively
if (f.isDirectory())
{
// System.out.println(f.getCanonicalPath());
FindFiles(new String[]{f.getCanonicalPath()});
}
else
{
System.out.println(f.getCanonicalPath());
}
}
}
}
catch(IOException e)
{

e.printStackTrace();
}
}
}



------解决方案--------------------
你说这个功能jdk已经实现了,好好看看java.io.File类的api文档。

这个类可以判断当前对象是directory还是file,如果是directory那么可以获得所有它的子节点(包括file和directory),这样递归处理就可以了。
------解决方案--------------------
File file = new File( "c:\\ ");
File[] subFiles = file.listFiles();
for(int i = 0; i < subFiles.length; i ++){
if(subFiles[i].isDirectory()){ //是目录
File[] subFiles2 = subFiles[i].listFiles();
for(int j = 0; j < subFiles2.length; j++ ){
....
}
}
}
层次少的话可以这样写的,如果层次太多就用递归来写
------解决方案--------------------
楼上的代码太长了,我的这个好像短一点
import java.io.File;
public class getdirtree {
public getdirtree() {
this.getfiletree( "d:\\temp ");
}

public void getfiletree(String filepath){
File f=new File(filepath);
String[] list=f.list();

for (int i=0;i <list.length;i++){
File ff=new File(filepath+ "\\ "+list[i]);

if (ff.isDirectory()){
this.getfiletree(filepath+ "\\ "+list[i]);
}

System.out.println(filepath+ "\\ "+list[i]);
}
}
public static void main(String[] args) {
new getdirtree();
}
}
------解决方案--------------------
file.getParentFile().getName()