本帖最后由 王月 于 2012-7-18 23:27 编辑
public class CopyFileTest {
/**
* 需求: 找出d盘下所有的 .java 文件,拷贝至 c:\jad 目录下。
*
* 思路:
* 1,递归指定的目录
* 2,递归过程中对文件指定指定条件的判断
* 3,将符合条件的文件存储进list集合
* 4,将改变类型的文件写入到另一个指定目录中
* @throws IOException
* @throws
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File dir = new File("d:\\");
List<File> list = new ArrayList<File>();
listDir(dir, list);
File destFile=new File("c:\\jad");
write2File(destFile,list);
}
public static void listDir(File dir, List<File> list) {
File[] files = dir.listFiles();
for (File file : files) {
//如果是目录则递归
if (file.isDirectory()) {
listDir(file, list);
} else {
//是文件则判断是否符合条件,符合则存入集合中
if (file.getName().endsWith(".java")) {
list.add(file);
}
}
}
}
private static void write2File(File destFile, List<File> list) throws IOException {
BufferedInputStream bufin=null;
BufferedOutputStream bufout=null;
byte[] by=new byte[1024];
int len=0;
try {
for(File file : list)
{
bufin=new BufferedInputStream(new FileInputStream(file));
bufout=new BufferedOutputStream(new FileOutputStream(destFile));
while((len=bufin.read(by))!=-1){
bufout.write(by,0,len);
bufout.flush();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
try{
if(bufout!=null)
{
bufout.close();
}
if(bufin!=null)
{
bufin.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}
运行出现空指针异常,不知道怎么回事。(提示说是在listDir()中,for循环和递归那里出现的问题)
|