如何扫描文件夹 大家好,我想问一下,如何用java实现对一个文件夹里面的文件进行列举,比如文件夹1里面有一些文件和文件夹2,文件夹2里面也有文件。如何一下子找出文件1里面包含的所有文件,最后连路经也列举出来。小弟在线等,谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用isDirectory()方法判断是否为目录,用getAbsolutePath()方法或者getCanonicalPath()方法返回路径名... import java.io.File; import java.io.IOException; public class TestReadSubDirectory { public static void main(String[] args) throws IOException { TestReadSubDirectory p = new TestReadSubDirectory(); p.read("\\user\\123\\1"); } public void read(String filepath) throws IOException { File f = new File(filepath);// 定义文件路径 if (f.exists() && f.isDirectory()) {// 判断是文件还是目录 if (f.listFiles().length == 0) {// 若目录下没有文件则直接操作 // f.delete(); 对空目录的操作 } else {// 若有则把文件放进数组,并判断是否有下级目录 File file[] = f.listFiles(); int i = f.listFiles().length; for (int j = 0; j < i; j++) { if (file[j].isDirectory()) { // 对当前目录的操作 read(file[j].getAbsolutePath());// 递归调用del方法并取得子目录路径 } // 对文件的操作/ } } read(filepath);// 递归调用 } } } 这是以前学习eclipse UI的时候自己写的一个文件对话框(这显示指定图形格式文件),你可以参考一下。import java.io.File;import java.io.FileFilter;import java.util.ArrayList;import java.util.List;import org.eclipse.jface.dialogs.IDialogConstants;import org.eclipse.jface.dialogs.TitleAreaDialog;import org.eclipse.jface.viewers.ISelectionChangedListener;import org.eclipse.jface.viewers.IStructuredContentProvider;import org.eclipse.jface.viewers.ITreeContentProvider;import org.eclipse.jface.viewers.LabelProvider;import org.eclipse.jface.viewers.SelectionChangedEvent;import org.eclipse.jface.viewers.TreeSelection;import org.eclipse.jface.viewers.TreeViewer;import org.eclipse.jface.viewers.Viewer;import org.eclipse.swt.SWT;import org.eclipse.swt.events.ModifyEvent;import org.eclipse.swt.events.ModifyListener;import org.eclipse.swt.events.SelectionEvent;import org.eclipse.swt.events.SelectionListener;import org.eclipse.swt.graphics.Image;import org.eclipse.swt.graphics.Point;import org.eclipse.swt.layout.FormAttachment;import org.eclipse.swt.layout.FormData;import org.eclipse.swt.layout.FormLayout;import org.eclipse.swt.layout.GridData;import org.eclipse.swt.widgets.Combo;import org.eclipse.swt.widgets.Composite;import org.eclipse.swt.widgets.Control;import org.eclipse.swt.widgets.Shell;import org.eclipse.swt.widgets.Tree;import org.eclipse.ui.plugin.AbstractUIPlugin;public class MyFileDialog extends TitleAreaDialog { private Image folder = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/folder.png").createImage(); private Image imgfile = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/imgfile.png").createImage(); private FileFilter filter = new AllImageFileFilter(); class TreeLabelProvider extends LabelProvider { public String getText(Object element) { String text = ""; File file = (File)element; if(file.isDirectory()){ text = file.getPath(); if(text.substring(text.lastIndexOf(file.separator)).length() > 1){ text = text.substring(text.lastIndexOf(file.separator)+1); } }else{ text = file.getName(); } return text; } public Image getImage(Object element) { File file = (File)element; return file.isDirectory()?folder:imgfile; } } class TreeContentProvider implements IStructuredContentProvider, ITreeContentProvider { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } public void dispose() { } public Object[] getElements(Object inputElement) { File[] roots = File.listRoots(); List<File> l = new ArrayList<File>(); for(File root:roots){ if(root.listFiles(filter) != null){ l.add(root); } } return l.toArray(); } public Object[] getChildren(Object parentElement) { File file = (File)parentElement; return file.listFiles(filter); } public Object getParent(Object element) { File file = (File)element; return file.getParentFile(); } public boolean hasChildren(Object element) { File file = (File)element; return file.listFiles(filter)!=null; } } private Tree tree; private Combo filefilter; private TreeViewer filetree; private File returnfile; /** * Create the dialog * @param parentShell */ public MyFileDialog(Shell parentShell) { super(parentShell); } /** * Create contents of the dialog * @param parent */ @Override protected Control createDialogArea(Composite parent) { Composite area = (Composite) super.createDialogArea(parent); Composite container = new Composite(area, SWT.NONE); container.setLayout(new FormLayout()); container.setLayoutData(new GridData(GridData.FILL_BOTH)); filefilter = new Combo(container, SWT.NONE); final FormData fd_filefilter = new FormData(); fd_filefilter.bottom = new FormAttachment(100, -24); fd_filefilter.right = new FormAttachment(100, -5); fd_filefilter.left = new FormAttachment(0, 5); filefilter.setLayoutData(fd_filefilter); filefilter.add("ALL Image Files"); filefilter.add("*.png"); filefilter.add("*.jpg"); filefilter.add("*.bmp"); filefilter.select(0); filetree = new TreeViewer(container, SWT.BORDER); filetree.setLabelProvider(new TreeLabelProvider()); filetree.setContentProvider(new TreeContentProvider()); tree = filetree.getTree(); fd_filefilter.top = new FormAttachment(tree, 5, SWT.DEFAULT); final FormData fd_tree = new FormData(); fd_tree.top = new FormAttachment(0, 5); fd_tree.left = new FormAttachment(0, 5); fd_tree.right = new FormAttachment(100, -5); fd_tree.bottom = new FormAttachment(100, -49); tree.setLayoutData(fd_tree); filetree.setInput("root"); filetree.addSelectionChangedListener(new ISelectionChangedListener(){ public void selectionChanged(SelectionChangedEvent event) { TreeSelection ts = (TreeSelection) filetree.getSelection(); File file = (File) ts.getFirstElement(); if(file.isDirectory()){ return; }else{ returnfile = file; System.out.println(returnfile); } }}); filefilter.addSelectionListener(new SelectionListener(){ public void widgetDefaultSelected(SelectionEvent e) { // TODO Auto-generated method stub } public void widgetSelected(SelectionEvent e) { int index = filefilter.getSelectionIndex(); switch (index) { case 0: filter = new AllImageFileFilter(); break; case 1: filter = new ImageFileFilter(".png"); break; case 2: filter = new ImageFileFilter(".jpg"); break; case 3: filter = new ImageFileFilter(".bmp"); break; default: break; } filetree.refresh(); }}); setMessage("选择个性图标,这个图标将显示在您的个人信息中。"); // return area; } /** * Create contents of the button bar * @param parent */ @Override protected void createButtonsForButtonBar(Composite parent) { createButton(parent, IDialogConstants.OK_ID, "确定", false); createButton(parent, IDialogConstants.CANCEL_ID, "取消", false); } /** * Return the initial size of the dialog */ @Override protected Point getInitialSize() { return new Point(500, 443); } protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText("选择个性图标"); } @Override protected void okPressed() { if(returnfile == null) return; super.okPressed(); } private class AllImageFileFilter implements FileFilter{ public boolean accept(File file) { String filename = file.getName().toLowerCase(); return filename.endsWith(".jpg")||filename.endsWith(".bmp")||filename.endsWith(".png")||file.isDirectory(); } } private class ImageFileFilter implements FileFilter{ String fileType; public ImageFileFilter(String fileType) { this.fileType = fileType; } public boolean accept(File file) { String filename = file.getName().toLowerCase(); return filename.endsWith(fileType)||file.isDirectory(); } } public File getSelect() { return returnfile; }} 对象和类 推荐几个软件界面设计论坛 如何去过滤后面的字符串 我这边有个JPanel,运行时动态向里面增加了组件 大家有没有用过System.load("");的? 一个死锁难题!能者入! java版严重的问题,新鸟老鸟都进来看看吧 阿里巴巴面试题的java初始化问题 请问在Java程序中能否直接读取ini文件,如何读取? 用什么工具开发corba好? JAVA新手求助!!!!!!!! 如何读取EXCEL中的内容
import java.io.IOException;
public class TestReadSubDirectory {
public static void main(String[] args) throws IOException {
TestReadSubDirectory p = new TestReadSubDirectory();
p.read("\\user\\123\\1");
}
public void read(String filepath) throws IOException {
File f = new File(filepath);// 定义文件路径
if (f.exists() && f.isDirectory()) {// 判断是文件还是目录
if (f.listFiles().length == 0) {// 若目录下没有文件则直接操作
// f.delete(); 对空目录的操作
} else {// 若有则把文件放进数组,并判断是否有下级目录
File file[] = f.listFiles();
int i = f.listFiles().length;
for (int j = 0; j < i; j++) {
if (file[j].isDirectory()) {
// 对当前目录的操作
read(file[j].getAbsolutePath());// 递归调用del方法并取得子目录路径
}
// 对文件的操作/
}
}
read(filepath);// 递归调用
}
}
}
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.plugin.AbstractUIPlugin;public class MyFileDialog extends TitleAreaDialog {
private Image folder = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/folder.png").createImage();
private Image imgfile = AbstractUIPlugin.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/imgfile.png").createImage();
private FileFilter filter = new AllImageFileFilter(); class TreeLabelProvider extends LabelProvider {
public String getText(Object element) {
String text = "";
File file = (File)element;
if(file.isDirectory()){
text = file.getPath();
if(text.substring(text.lastIndexOf(file.separator)).length() > 1){
text = text.substring(text.lastIndexOf(file.separator)+1);
}
}else{
text = file.getName();
}
return text;
}
public Image getImage(Object element) {
File file = (File)element;
return file.isDirectory()?folder:imgfile;
}
}
class TreeContentProvider implements IStructuredContentProvider, ITreeContentProvider {
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
public void dispose() {
}
public Object[] getElements(Object inputElement) {
File[] roots = File.listRoots();
List<File> l = new ArrayList<File>();
for(File root:roots){
if(root.listFiles(filter) != null){
l.add(root);
}
}
return l.toArray();
}
public Object[] getChildren(Object parentElement) {
File file = (File)parentElement;
return file.listFiles(filter);
}
public Object getParent(Object element) {
File file = (File)element;
return file.getParentFile();
}
public boolean hasChildren(Object element) {
File file = (File)element;
return file.listFiles(filter)!=null;
}
}
private Tree tree;
private Combo filefilter;
private TreeViewer filetree;
private File returnfile;
/**
* Create the dialog
* @param parentShell
*/
public MyFileDialog(Shell parentShell) {
super(parentShell);
} /**
* Create contents of the dialog
* @param parent
*/
@Override
protected Control createDialogArea(Composite parent) {
Composite area = (Composite) super.createDialogArea(parent);
Composite container = new Composite(area, SWT.NONE);
container.setLayout(new FormLayout());
container.setLayoutData(new GridData(GridData.FILL_BOTH)); filefilter = new Combo(container, SWT.NONE);
final FormData fd_filefilter = new FormData();
fd_filefilter.bottom = new FormAttachment(100, -24);
fd_filefilter.right = new FormAttachment(100, -5);
fd_filefilter.left = new FormAttachment(0, 5);
filefilter.setLayoutData(fd_filefilter);
filefilter.add("ALL Image Files");
filefilter.add("*.png");
filefilter.add("*.jpg");
filefilter.add("*.bmp");
filefilter.select(0); filetree = new TreeViewer(container, SWT.BORDER);
filetree.setLabelProvider(new TreeLabelProvider());
filetree.setContentProvider(new TreeContentProvider());
tree = filetree.getTree();
fd_filefilter.top = new FormAttachment(tree, 5, SWT.DEFAULT);
final FormData fd_tree = new FormData();
fd_tree.top = new FormAttachment(0, 5);
fd_tree.left = new FormAttachment(0, 5);
fd_tree.right = new FormAttachment(100, -5);
fd_tree.bottom = new FormAttachment(100, -49);
tree.setLayoutData(fd_tree);
filetree.setInput("root");
filetree.addSelectionChangedListener(new ISelectionChangedListener(){ public void selectionChanged(SelectionChangedEvent event) {
TreeSelection ts = (TreeSelection) filetree.getSelection();
File file = (File) ts.getFirstElement();
if(file.isDirectory()){
return;
}else{
returnfile = file;
System.out.println(returnfile);
}
}});
filefilter.addSelectionListener(new SelectionListener(){ public void widgetDefaultSelected(SelectionEvent e) {
// TODO Auto-generated method stub
} public void widgetSelected(SelectionEvent e) {
int index = filefilter.getSelectionIndex();
switch (index) {
case 0:
filter = new AllImageFileFilter();
break;
case 1:
filter = new ImageFileFilter(".png");
break;
case 2:
filter = new ImageFileFilter(".jpg");
break;
case 3:
filter = new ImageFileFilter(".bmp");
break; default:
break;
}
filetree.refresh();
}});
setMessage("选择个性图标,这个图标将显示在您的个人信息中。");
//
return area;
} /**
* Create contents of the button bar
* @param parent
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, "确定",
false);
createButton(parent, IDialogConstants.CANCEL_ID,
"取消", false);
} /**
* Return the initial size of the dialog
*/
@Override
protected Point getInitialSize() {
return new Point(500, 443);
}
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("选择个性图标");
}
@Override
protected void okPressed() {
if(returnfile == null)
return;
super.okPressed();
}
private class AllImageFileFilter implements FileFilter{ public boolean accept(File file) {
String filename = file.getName().toLowerCase();
return filename.endsWith(".jpg")||filename.endsWith(".bmp")||filename.endsWith(".png")||file.isDirectory();
}
}
private class ImageFileFilter implements FileFilter{
String fileType;
public ImageFileFilter(String fileType) {
this.fileType = fileType;
} public boolean accept(File file) {
String filename = file.getName().toLowerCase();
return filename.endsWith(fileType)||file.isDirectory();
}
}
public File getSelect() {
return returnfile;
}
}