java文件IO操作

jopen 12年前發布 | 40K 次閱讀 Java開發 Java

package com.io;

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.InputStream; import java.io.PrintWriter;

public class FileOperate {
/**

     *  新建目錄  
     *  @param  folderPath  String  如  c:/fqf  
     *  @return  boolean  
     */  
   public static void  newFolder(String  folderPath)  {  
       try  {  
           String  filePath  =  folderPath;  
           File  myFilePath  =  new 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 static void  newFile(String  filePathAndName,  String  fileContent)  {  

       try  {  
           String  filePath  =  filePathAndName;  
           File  myFilePath  =  new  File(filePath);  
           if  (!myFilePath.exists())  {  
               myFilePath.createNewFile(); 
               System.out.println("創建文件成功");
           }  
           FileWriter  resultFile  =  new  FileWriter(myFilePath);  
           PrintWriter  myFile  =  new  PrintWriter(resultFile);  
           myFile.println(fileContent);  
           System.out.println("寫入文件成功");
           resultFile.close();  
       }  
       catch  (Exception  e)  {  
           System.out.println("新建文件操作出錯");  
           e.printStackTrace();  
       }  
   }  

   /**  
     *  刪除文件  
     *  @param  filePathAndName  String  文件路徑及名稱  如c:/fqf.txt  
     *  @param  fileContent  String  
     *  @return  boolean  
     */  
   public static  void  delFile(String  filePathAndName)  {  
       try  {  
           File myDelFile  = new File(filePathAndName);  
           myDelFile.delete();  
           System.out.println("刪除文件成功!");
       }  
       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);  //刪除完里面所有內容  
           File  myFilePath  =  new File(folderPath);  
           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);  

   }  

    // 拷貝文件
   private void copyFile2(String source, String dest) {
   try {
       File in = new File(source);
       File out = new File(dest);
       FileInputStream inFile = new FileInputStream(in);
       FileOutputStream outFile = new FileOutputStream(out);
       byte[] buffer = new byte[1024];
       int i = 0;
       while ((i = inFile.read(buffer)) != -1) {
       outFile.write(buffer, 0, i);
   }//end while
       inFile.close();
       outFile.close();
   }//end try
   catch (Exception e) {

   }//end catch
   }//end copyFile

}</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!