1.3.43文件列表。文件夹就是一列文件和文件夹的列表。编写一个程序,从命令行接受一个文件夹名作为参数,打印出访文件夹下的所有文件并用递归的方式在所有子文件夹的名下(缩进)列出其下的所有文件。提示:使用队列,并参考java.io.File。
答:
import java.io.File;
public class test
{
private class MyFile
{
String name;
int level;
}
public static void main(String[] args)
{
String dirName=args[0];
File f=new File(dirName);
Queue<MyFile> q=new Queue<MyFile>();
int level=0;
test mytest=new test();
mytest.ShowAllDirAndFile(f,q,level);
for(MyFile i:q)
StdOut.printf("%"+3*i.level+"s%s ","",i.name);
}//end main
public void ShowAllDirAndFile(File f,Queue<MyFile> q,int level)
{
if(f==null) return;
level++;
if(f.isDirectory())
{
MyFile myfile=new MyFile();
myfile.name=f.getName().toString();
myfile.level=level;
q.enqueue(myfile);
File[] files=f.listFiles();
if(files.length>0)
for(File file:files)
ShowAllDirAndFile(file,q,level);
}
else
{
MyFile myfile=new MyFile();
myfile.name=f.getName().toString();
myfile.level=level;
q.enqueue(myfile);
}
}
}//end class
答:
import java.io.File;
public class test
{
private class MyFile
{
String name;
int level;
}
public static void main(String[] args)
{
String dirName=args[0];
File f=new File(dirName);
Queue<MyFile> q=new Queue<MyFile>();
int level=0;
test mytest=new test();
mytest.ShowAllDirAndFile(f,q,level);
for(MyFile i:q)
StdOut.printf("%"+3*i.level+"s%s ","",i.name);
}//end main
public void ShowAllDirAndFile(File f,Queue<MyFile> q,int level)
{
if(f==null) return;
level++;
if(f.isDirectory())
{
MyFile myfile=new MyFile();
myfile.name=f.getName().toString();
myfile.level=level;
q.enqueue(myfile);
File[] files=f.listFiles();
if(files.length>0)
for(File file:files)
ShowAllDirAndFile(file,q,level);
}
else
{
MyFile myfile=new MyFile();
myfile.name=f.getName().toString();
myfile.level=level;
q.enqueue(myfile);
}
}
}//end class