欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java文件操作工具类实现复制文件和文件合并

程序员文章站 2024-02-26 08:08:34
两个方法:1、复制一个目录下面的所有文件和文件夹2、将一个文件目录下面的所有文本文件合并到同一个文件中 复制代码 代码如下:package com.firewolf.te...

两个方法:
1、复制一个目录下面的所有文件和文件夹
2、将一个文件目录下面的所有文本文件合并到同一个文件中

复制代码 代码如下:

package com.firewolf.test;

import java.io.file;
import java.io.fileinputstream;
import java.io.fileoutputstream;
import java.io.ioexception;

public class filereaderutil {
 public static void main(string[] args){
  try {
   //mergefile(new file("c:/documents and settings/liuxing0/桌面/新建文件夹/script"), new file("d:/all.sql"));
   copyfiles(new file("g:/学习资料/笔记"),new file("g:/test"));
  } catch (ioexception e) {
   e.printstacktrace();
  }
 }

 /**
  * 拷贝某个文件目录下面的所有文件,
  * @param sourcepath 原文件目录
  * @param despath 目的文件目录
  */
 private static void copyfiles(file sourcefile,file desfile) throws ioexception{
  if(sourcefile.isfile()){
   file file = new file(desfile.getpath()+"/"+sourcefile.getname());
   fileinputstream fis = new fileinputstream(sourcefile);
   fileoutputstream fos = new fileoutputstream(file);
   int len = 0;
   byte[] buf = new byte[1024];
   while((len = fis.read(buf)) != -1)
    fos.write(buf,0,len);
  }else{
   file dir = new file(desfile.getpath()+"/"+sourcefile.getname());
   if(!dir.exists())
    dir.mkdir();
   string[] names = sourcefile.list();
   for (int i = 0; i < names.length; i++) {
    copyfiles(new file(sourcefile.getpath()+"/"+names[i]),dir);
   }
  }
 }

 /**
  * 将一个文件目录下面的所有文件独到一个文件中的方法(主要用于将很多文本文件合并到一起)
  * @param sourcefile
  * @param decfile
  * @return
  * @throws ioexception
  */
 private static file mergefile(file sourcefile,file decfile) throws ioexception{
  string[] filelist = sourcefile.list();
  for (string string : filelist) {
   file file = new file(sourcefile.getpath()+"/"+string);
   if(!file.isdirectory()){

    fileinputstream fis = new fileinputstream(file);
    fileoutputstream fos = new fileoutputstream(decfile, true);
    byte[] buffer = new byte[1024];
    int len = 0;
    while((len= fis.read(buffer)) != -1)
     fos.write(buffer, 0, len);
   }
   else {
    decfile = mergefile(file,decfile);
   }
  }
  return decfile;
 }
}