本帖最后由 陈山 于 2012-11-20 22:29 编辑
需求:把当前文件夹中的 N 个文件夹中的avi视频剪切到当前文件中的一个新的文件夹里
我写的代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CutAVI {
/**
* 1.遍历avi文件 ,增强for,递归
* 2.拷贝avi文件到一个新的文件夹,FileInputStream,FileOutputStream
* 3.删除遍历的avi文件
*/
public static void main(String[] args) throws IOException {
File file=new File("E:\\test");//创建File实例,路径为当前文件夹路径
copyAndDelete(file);
}
public static void copyAndDelete(File file) throws IOException{//拷贝文件到新的文件夹,然后删除文件
File[] files=file.listFiles();//获取当前文件夹下的所有文件对象
for(File f:files){//遍历当前文件夹下所有文件和文件夹
if(f.isDirectory()){//如果文件对象是文件夹
copyAndDelete(f);//递归
}else{
if(f.getAbsolutePath().endsWith(".avi")){//如果文件的文件名以”.avi“结尾,拷贝文件到新的文件夹里面
FileInputStream fis=new FileInputStream(f);//创建输入流
String str="e:\\test\\newfloder\\"+f.getName();//拷贝后文件的路径
File newF=new File(str);//创建拷贝后的文件对象
if(!newF.exists()){//如果文件不存在
newF.createNewFile();//创建文件
}
FileOutputStream fos=new FileOutputStream(newF);//创建输出流
//拷贝
byte [] bytes=new byte[1024];
int len=0;
while((len=fis.read(bytes))!=-1){
fos.write(bytes);
fos.flush();
}
fis.close();//关闭输入流
fos.close();//关闭输出流
f.delete();//删除源文件
}
}
}
}
}
问题:程序运行后,先把当前文件夹所有的avi文件复制到了当前文件夹里面一个新的文件夹,但是之后又把所有的avi文件删除了,包括新的文件夹里面的文件,问题在哪里呢?该怎么改进下? |
|