- package pt;
- import java.io.*;
- public class SC {
- /**
- * @param args
- * @throws IOException
- * 复制后删掉源文件就是剪切了。
- * 我写的这个可以往其他文件夹里剪切文件,
- * 把file和file_1写成同一个文件夹就是楼主的要求
- */
- public static void main(String[] args) throws IOException {
- File file=new File("F:\\mytest");
- File file_1=new File("E:\\Copy_mytest");
- if(!file_1.exists())
- file_1.mkdirs();
- find(file,file_1);
- }
- public static void find(File s,File o) throws IOException{
- File[] files=s.listFiles();
- BufferedOutputStream bos=null;
- BufferedInputStream bis=null;
- for(int i=0;i<files.length;i++){
- byte[] buf=new byte[1024*1024*50];//设置能移动的文件大小最大为50M,因为java虚拟机的内存默认大小是64M。
- int len=0;
- if(!files[i].isHidden()&&files[i].isDirectory())//如果是文件夹,继续找
- {
- find(files[i],o);
- }
- else
- {
- if(files[i].getName().endsWith(".avi"))//找到avi文件
- {
- bis=new BufferedInputStream(new FileInputStream(files[i]));//把源文件夹内的文件或文件夹加入输入流
- while((len=bis.read(buf))!=-1)
- {
- File f=new File(o.getAbsolutePath()+"\\"+files[i].getName());//由目的文件夹名和被剪切文件名确定新文件的绝对路径
- if(f.exists())//如果重名,删掉旧的
- f.delete();
- f.createNewFile();
- bos=new BufferedOutputStream(new FileOutputStream(f));//把新文件加入输出流
- bos.write(buf, 0, len);
- bos.flush();
- if(bos!=null)
- bos.close();
- }
- if(bis!=null)
- bis.close();
- if(files[i].exists())//删掉源文件,完成剪切动作
- files[i].delete();
- }
- }
- }
- }
- }
复制代码 注意:
本程序能剪切的文件在50M以下,因为java虚拟机的内存默认很小。 |