java怎么样获取路径下的文件?

java怎么样获取路径下的文件?如 :
String path ="D:\data";
我想获得path下的所有xml格式的文件.
请高手指教,谢谢!小弟不胜感激!
大哥,我已经用你的方法得到了所有xml文件,我还想把这些文件都放到另外一个文件里面,比如:F:\Date,请问怎么放啊? 我已经把得到的xml文件放在一个list里面了!
如: fileList !
谢谢大哥的帮助哈~ 还希望大哥能帮我再解决下!

//根据你的要求修改了一下代码,现在已经能将某文件夹下的所有指定类型文件复制到
//指定文件夹下了
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class ReadFiles {
public static final String FILTER = "xml";
public static final String SRC_DIR = "E:\\StudyData";// 待扫描的文件夹
public static final String DES_DIR = "E:\\testdata";// 复制后的目标文件夹

public static void main(String[] args) {
long a = System.currentTimeMillis();
scanDir(SRC_DIR, DES_DIR);
System.out.println("共花费时间:"+(System.currentTimeMillis() - a)/1000+"秒");
}

public static void scanDir(String srcPath, String desPath) {
File dir = new File(srcPath);
File[] files = dir.listFiles();

if (files == null)
return;
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
scanDir(files[i].getAbsolutePath(), desPath);
} else {
String strFileName = files[i].getAbsolutePath().toLowerCase();
copyFile(strFileName, desPath + files[i].getName());
}
}
}

public static void copyFile(String srcName, String destName) {
if (srcName.endsWith(FILTER)) {
System.out.println("正在复制文件 "+srcName+" 至 "+destName);
try {
BufferedInputStream in = new BufferedInputStream(
new FileInputStream(srcName));
BufferedOutputStream out = new BufferedOutputStream(
new FileOutputStream(destName));
int i = 0;
byte[] buffer = new byte[2048];
while ((i = in.read(buffer)) != -1) {
out.write(buffer, 0, i);
}
out.close();
in.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-02
这个应该是涉及java的IO流问题了,public File[]listFiles(FilenameFilter obj) 该方法用File对象返回目录下的指定类型的所有文件。其中FilenameFilter是一个接口,其实现的方法是public boolean accept(File dir,String name);,方法中的参数dir是调用当前目录下对象。
例:
File dir=new File("D:\date");
FileAccept acceptCondition=new FileAccept("xml");
File fileName[]=dir.listFiles(acceptContion);
当然别忘记实现boolean accept方法了。细节可以百度一下。本回答被网友采纳
第2个回答  2010-12-02
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication2;

import java.io.File;
import java.io.FileFilter;

/**
*
* @author Steven
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
File file = new File("D:\\");
FileFilter ff = new FileFilter() {

public boolean accept(File file) {
boolean flag = false;
if (file.isFile()) {
String fileName = file.getName();
if (fileName.endsWith("xml")) {
flag = true;
}
}
return flag;
}
};
for (File f : file.listFiles(ff)) {
System.out.println(f.getName());
}
}
}
第3个回答  2010-12-02
我连用IO流怎么读文件都忘了,谢谢各位的提示。

import java.io.*;
public class ReadFile {
public static void listXMLFile(File file)throws IOException{
if(file.isDirectory()){
File[] files=file.listFiles();
for(File a:files){
listXMLFile(a);
}
}
if(file.getName().toLowerCase().endsWith(".xml")){
System.out.println(file.getAbsolutePath()+"文件内容如下:");
BufferedReader in=new BufferedReader(new FileReader(file));
String line=null;
while((line=in.readLine())!=null){
System.out.println(line);
}
System.out.println("------------------------");
}
}
public static void main(String[] args) {
try {
listXMLFile(new File("d:\\path"));
}catch(IOException e){e.printStackTrace();}
}
}
相似回答