本帖最后由 孙飞 于 2012-8-7 02:00 编辑
我做了一下 package cn.itcast.day1;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class GetFileDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
File file=new File("e:\\其它\\相片");//这是我相片存放的目录,你可以改成你的
List<String> list=new ArrayList<String>();
method(file,list);
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try {
Iterator<String> it=list.iterator();
while(it.hasNext()){
String s=it.next();
int a=s.lastIndexOf("\\");
String subs=s.substring(a); //取出原文件的文件名
bos=new BufferedOutputStream(new FileOutputStream("e:\\其它\\2\\"+subs)); //用目的目录加上原文件名做为要输出的路径
bis=new BufferedInputStream(new FileInputStream(s));
byte[] by=new byte[1024];
int len=0;
while ((len=bis.read(by))!=-1) { //进行读写
bos.write(by,0,len);
bos.flush();
}
}
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
finally{ //关闭流
try {
if (bis!=null) {
bis.close();
}
} catch (IOException e2) {
// TODO: handle exception //下面的蓝体字注释部分中的arr应该是arr再加上中括号里面加 i ,在那个部位改不过来,
e2.printStackTrace(); //改了一保存就又没了,在这里说一下吧改下面那个字体 改不少时间,不改了,希望你知道吧
}
try {
if (bos!=null) {
bos.close();
}
} catch (IOException e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
}
public static void method(File file,List<String> list){ //定义一个功能 ,把封闭有源文件目录的对象传入,并传入一个集合
File[] arr=file.listFiles(); //把源目录中的文件返回成数组,并对数组进行遍历,用递归的方法把所有的文件路径存入集合中
for (int i = 0; i < arr.length; i++) {
if (arr.isHidden()&&arr.isDirectory()) { //这里和字体,不知道怎么了,搞不好了,这里还有下面的arr应该是arr 不知怎么了,改过一保存就没了
method(arr,list);
}
else {
list.add(arr.getAbsolutePath());
}
}
}
}
|