Java读写文件 FileOperate

FileOperate.java


import     java.io.*;     
  
public     class     FileOperate     {     
      public     FileOperate()     {     
      }     
  
      /**     
          *     新建目录     
          *     @param     folderPath     String     如     c:/fqf     
          *     @return     boolean     
          */     
      public     void     newFolder(String     folderPath)     {     
              try     {     
                      String     filePath     =     folderPath;     
                      filePath     =     filePath.toString();     
                      java.io.File     myFilePath     =     new     java.io.File(filePath);     
                      if     (!myFilePath.exists())     {     
                              myFilePath.mkdir();     
                      }     
              }     
              catch     (Exception     e)     {     
                      System.out.println( "新建目录操作出错 ");     
                      e.printStackTrace();     
              }     
      }     
  
      /**     
          *     新建文件     
          *     @param     filePathAndName     String     文件路径及名称     如c:/fqf.txt     
          *     @param     fileContent     String     文件内容     
          *     @return     boolean     
          */     
      public     void     newFile(String     filePathAndName,     String     fileContent)     {     
  
              try     {     
                      String     filePath     =     filePathAndName;     
                      filePath     =     filePath.toString();     
                      File     myFilePath     =     new     File(filePath);     
                      if     (!myFilePath.exists())     {     
                              myFilePath.createNewFile();     
                      }     
                      FileWriter     resultFile     =     new     FileWriter(myFilePath);     
                      PrintWriter     myFile     =     new     PrintWriter(resultFile);     
                      String     strContent     =     fileContent;     
                      myFile.println(strContent);     
                      resultFile.close();     
  
              }     
              catch     (Exception     e)     {     
                      System.out.println( "新建目录操作出错 ");     
                      e.printStackTrace();     
  
              }     
  
      }     
  
      /**     
          *     删除文件     
          *     @param     filePathAndName     String     文件路径及名称     如c:/fqf.txt     
          *     @param     fileContent     String     
          *     @return     boolean     
          */     
      public     void     delFile(String     filePathAndName)     {     
              try     {     
                      String     filePath     =     filePathAndName;     
                      filePath     =     filePath.toString();     
                      java.io.File     myDelFile     =     new     java.io.File(filePath);     
                      myDelFile.delete();     
  
              }     
              catch     (Exception     e)     {     
                      System.out.println( "删除文件操作出错 ");     
                      e.printStackTrace();     
  
              }     
  
      }     
  
      /**     
          *     删除文件夹     
          *     @param     filePathAndName     String     文件夹路径及名称     如c:/fqf     
          *     @param     fileContent     String     
          *     @return     boolean     
          */     
      public     void     delFolder(String     folderPath)     {     
              try     {     
                      delAllFile(folderPath);     //删除完里面所有内容     
                      String     filePath     =     folderPath;     
                      filePath     =     filePath.toString();     
                      java.io.File     myFilePath     =     new     java.io.File(filePath);     
                      myFilePath.delete();     //删除空文件夹     
  
              }     
              catch     (Exception     e)     {     
                      System.out.println( "删除文件夹操作出错 ");     
                      e.printStackTrace();     
  
              }     
  
      }     
  
      /**     
          *     删除文件夹里面的所有文件     
          *     @param     path     String     文件夹路径     如     c:/fqf     
          */     
      public     void     delAllFile(String     path)     {     
              File     file     =     new     File(path);     
              if     (!file.exists())     {     
                      return;     
              }     
              if     (!file.isDirectory())     {     
                      return;     
              }     
              String[]     tempList     =     file.list();     
              File     temp     =     null;     
              for     (int     i     =     0;     i     <     tempList.length;     i++)     {     
                      if     (path.endsWith(File.separator))     {     
                              temp     =     new     File(path     +     tempList[i]);     
                      }     
                      else     {     
                              temp     =     new     File(path     +     File.separator     +     tempList[i]);     
                      }     
                      if     (temp.isFile())     {     
                              temp.delete();     
                      }     
                      if     (temp.isDirectory())     {     
                              delAllFile(path+ "/ "+     tempList[i]);//先删除文件夹里面的文件     
                              delFolder(path+ "/ "+     tempList[i]);//再删除空文件夹     
                      }     
              }     
      }     
  
      /**     
          *     复制单个文件     
          *     @param     oldPath     String     原文件路径     如:c:/fqf.txt     
          *     @param     newPath     String     复制后路径     如:f:/fqf.txt     
          *     @return     boolean     
          */     
      public     void     copyFile(String     oldPath,     String     newPath)     {     
              try     {     
                      int     bytesum     =     0;     
                      int     byteread     =     0;     
                      File     oldfile     =     new     File(oldPath);     
                      if     (oldfile.exists())     {     //文件存在时     
                              InputStream     inStream     =     new     FileInputStream(oldPath);     //读入原文件     
                              FileOutputStream     fs     =     new     FileOutputStream(newPath);     
                              byte[]     buffer     =     new     byte[1444];     
                              int     length;     
                              while     (     (byteread     =     inStream.read(buffer))     !=     -1)     {     
                                      bytesum     +=     byteread;     //字节数     文件大小     
                                      System.out.println(bytesum);     
                                      fs.write(buffer,     0,     byteread);     
                              }     
                              inStream.close();     
                      }     
              }     
              catch     (Exception     e)     {     
                      System.out.println( "复制单个文件操作出错 ");     
                      e.printStackTrace();     
  
              }     
  
      }     
  
      /**     
          *     复制整个文件夹内容     
          *     @param     oldPath     String     原文件路径     如:c:/fqf     
          *     @param     newPath     String     复制后路径     如:f:/fqf/ff     
          *     @return     boolean     
          */     
      public     void     copyFolder(String     oldPath,     String     newPath)     {     
  
              try     {     
                      (new     File(newPath)).mkdirs();     //如果文件夹不存在     则建立新文件夹     
                      File     a=new     File(oldPath);     
                      String[]     file=a.list();     
                      File     temp=null;     
                      for     (int     i     =     0;     i     <     file.length;     i++)     {     
                              if(oldPath.endsWith(File.separator)){     
                                      temp=new     File(oldPath+file[i]);     
                              }     
                              else{     
                                      temp=new     File(oldPath+File.separator+file[i]);     
                              }     
  
                              if(temp.isFile()){     
                                      FileInputStream     input     =     new     FileInputStream(temp);     
                                      FileOutputStream     output     =     new     FileOutputStream(newPath     +     "/ "     +     
                                                      (temp.getName()).toString());     
                                      byte[]     b     =     new     byte[1024     *     5];     
                                      int     len;     
                                      while     (     (len     =     input.read(b))     !=     -1)     {     
                                              output.write(b,     0,     len);     
                                      }     
                                      output.flush();     
                                      output.close();     
                                      input.close();     
                              }     
                              if(temp.isDirectory()){//如果是子文件夹     
                                      copyFolder(oldPath+ "/ "+file[i],newPath+ "/ "+file[i]);     
                              }     
                      }     
              }     
              catch     (Exception     e)     {     
                      System.out.println( "复制整个文件夹内容操作出错 ");     
                      e.printStackTrace();     
  
              }     
  
      }     
  
      /**     
          *     移动文件到指定目录     
          *     @param     oldPath     String     如:c:/fqf.txt     
          *     @param     newPath     String     如:d:/fqf.txt     
          */     
      public     void     moveFile(String     oldPath,     String     newPath)     {     
              copyFile(oldPath,     newPath);     
              delFile(oldPath);     
  
      }     
  
      /**     
          *     移动文件到指定目录     
          *     @param     oldPath     String     如:c:/fqf.txt     
          *     @param     newPath     String     如:d:/fqf.txt     
          */     
      public     void     moveFolder(String     oldPath,     String     newPath)     {     
              copyFolder(oldPath,     newPath);     
              delFolder(oldPath);     
  
      }     
}

 

MergeFile.java

import java.io.*;
import java.util.*;


public class MergeFile {

 //private String srcfile;
 private String descfile="E:\\merge";
 MergeFile(){
  
 }
 public void merge(List<File> srcfiles,String descfile){
  if(descfile!=null&&!descfile.isEmpty()){
   this.descfile=descfile;
  }
  File mergefile=new File(descfile);
  if(!mergefile.exists()){
   mergefile.mkdirs();
  }
  
  for(File file:srcfiles){
   if(file!=null){
    for(File fille2:file.listFiles()){
     try {
      recursion( file.getPath(), fille2);
     } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
    }
   }
   
  }
 }
  
 public void recursion(String root,File vFile) throws IOException{
   if(vFile.isFile()){
   File descfile=new File(getRelativePath(root,vFile.getPath())); 
    
   copy(  vFile,  descfile);
    
   
   }
   else {
    /*System.out.println("         path="+vFile.getPath());
    System.out.println("CanonicalPath="+vFile.getCanonicalPath());
    System.out.println(" absolutePath="+vFile.getAbsolutePath());
    System.out.println(" relativePath="+getRelativePath(root,vFile.getPath()));*/
    File directoryFile=new File(getRelativePath(root,vFile.getPath()));
    if(!directoryFile.exists()){
     directoryFile.mkdir();
    }
    File[] files=vFile.listFiles();
     if(files!=null && files.length>0){
      for(File file:files){
        
       recursion(root,file);
      } 
     }
     else{
      return;
     } 
     
     
     
   }
    
    
 }
    /**     
     *     复制单个文件     
     *     @param     oldPath     String     原文件路径     如:c:/fqf.txt     
     *     @param     newPath     String     复制后路径     如:f:/fqf.txt     
     *     @return     boolean     
     */     
 public     void     copyFile(String     oldPath,     String     newPath)     {     
         try     {     
                 int     bytesum     =     0;     
                 int     byteread     =     0;     
                 File     oldfile     =     new     File(oldPath);     
                 if     (oldfile.exists())     {     //文件存在时     
                         InputStream     inStream     =     new     FileInputStream(oldPath);     //读入原文件     
                         FileOutputStream     fs     =     new     FileOutputStream(newPath);     
                         byte[]     buffer     =     new     byte[1444];     
                         int     length;     
                         while     (     (byteread     =     inStream.read(buffer))     !=     -1)     {     
                                 bytesum     +=     byteread;     //字节数     文件大小     
                                 System.out.println(bytesum);     
                                 fs.write(buffer,     0,     byteread);     
                         }     
                         inStream.close();     
                 }     
         }     
         catch     (Exception     e)     {     
                 System.out.println( "复制单个文件操作出错 ");     
                 e.printStackTrace();    

         }    

 }     
 public void copy(File srcFile,File descFile){
  copyFile(     srcFile.getPath(),           descFile.getPath()); 
  /*FileOutputStream out=null;
  FileInputStream in=null;
  try {
   out=new FileOutputStream(descFile);
   in=new FileInputStream(srcFile);
   byte[] buffer=new byte[1024*8];
   while(in.read(buffer)!=-1){
    out.write(buffer);
    out.flush();
   }
   
   
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  finally{
   
   try {
    if(in!=null){
     in.close();
    }
    if(out!=null){
     out.flush();
     out.close();
    }
    
   } catch (IOException e) {
     // TODO Auto-generated catch block
    e.printStackTrace();
   }
    
   
  }*/
  
 }
 public String getRelativePath(String root,String file){
  return descfile+file.substring(root.length());
 }
 public static void main(String[] args){
  List<File> files=new ArrayList<File>();
  /*files.add(new File("E:\\test\\AppFramework.src"));
  files.add(new File("E:\\test\\javaws.src"));
  files.add(new File("E:\\test\\swing-worker.src"));
  files.add(new File("E:\\test\\swingx.src"));
  files.add(new File("E:\\test\\TimingFramework.src"));
  files.add(new File("C:\\Documents and Settings\\Administrator\\桌面\\新建文件夹 (2)\\SwingSet3"));
  */
  files.add(new File("E:\\test2\\a"));
  files.add(new File("E:\\test2\\b"));
   
  new MergeFile().merge(files, "E:\\merge2");
  System.out.println("merge成功!");
 }
 
}

猜你喜欢

转载自tw-wangzhengquan.iteye.com/blog/1183392