如何用java 实现遍历显示某目录下的所有文件及目录?

如何用java 实现遍历并显示某目录下的所有文件及目录?
2024-12-28 02:11:50
推荐回答(3个)
回答1:

为了避免目录列举消耗时间过长,请指定一个目录来模拟,命令行参数:代表路径的字符串.
如果认可代码,请加分50,谢谢

----

import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import java.io.*;
final public class FileTree extends JFrame {
public FileTree(File dir) throws HeadlessException {
super("File Tree");
JTree tree;
add(new JScrollPane(tree =new JTree(buildTreeModel(dir))));
tree.setCellRenderer(new FileTreeRenderer());
setSize(400,600);
setVisible(true);
}

private TreeModel buildTreeModel(File dir){
DefaultMutableTreeNode root = new DefaultMutableTreeNode(dir);
walkthrough(dir,root);
return new DefaultTreeModel(root);
}

private static void walkthrough(File f,DefaultMutableTreeNode node){
for (File fle : f.listFiles()) {
DefaultMutableTreeNode n = new DefaultMutableTreeNode(fle);
node.add(n);
if (fle.isDirectory()){
walkthrough(fle, n);
}
}
}

private class FileTreeRenderer extends DefaultTreeCellRenderer {
public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
JLabel cmp = (JLabel)super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus);
if (value instanceof DefaultMutableTreeNode) {
DefaultMutableTreeNode n = (DefaultMutableTreeNode)value;
Object obj = n.getUserObject();
if (obj instanceof File) {
File f = (File)obj;
cmp.setText(f.getName());
cmp.setForeground(f.isDirectory()?Color.BLUE:Color.BLACK);
}
}
return cmp;
}
}

public static void main(String[] args) {
new FileTree(new File(args[0]));
}
}

回答2:

何必如此复杂

import java.io.*;
public class ListFile{
static public void main(String[] str)throws Exception{
File f=null;
BufferedReader read=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个目录:");
String path=read.readLine();
f=new File(path);
File[] list=f.listFiles();
for(int i=0;i System.out.println(list[i]);
}
}

回答3:

//何必如此复杂,分不要给我,给我楼上的朋友
//yuge4725 简直画蛇添足!太搞笑了

import java.io.*;
public class ListFile{
static public void main(String[] str)throws Exception{
File f=null;
BufferedReader read=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入一个目录:");
String path=read.readLine();
f=new File(path);
File[] list=f.listFiles();
for(int i=0;iSystem.out.println(list[i].getAbsolutePath());//打印全路径
}
}