Java檔案處理

來源:互聯網
上載者:User

I/O處理中,最常見的是對檔案的操作,java.io包中有關檔案處理的類有:File、FileInputStream、FileOutputStream、RamdomAccessFile和FileDescriptor;介面有:FilenameFilter。
類File提供了一種與機器無關的方式來描述一個檔案對象的屬性。下面我們介紹類File中提供的各種方法。
◇ 檔案或目錄的產生
  public File(String path);/*如果path是實際存在的路徑,則該File對象
    /*表示的是目錄;如果path是檔案名稱,則該File對象表示的是檔案。*/
  public File(String path,String name);//path是路徑名,name是檔案名稱
  public File(File dir,String name);//dir是路徑名,name是檔案名稱
 ◇ 檔案名稱的處理
  String getName( ); //得到一個檔案的名稱(不包括路徑)
  String getPath( ); //得到一個檔案的路徑名
  String getAbsolutePath( );//得到一個檔案的絕對路徑名
  String getParent( ); //得到一個檔案的上一級目錄名
  String renameTo(File newName); //將當前檔案名稱更名為給定檔案的
                   完整路徑
 ◇ 檔案屬性測試
  boolean exists( ); //測試當前File對象所指示的檔案是否存在
  boolean canWrite( );//測試當前檔案是否可寫
  boolean canRead( );//測試當前檔案是否可讀
  boolean isFile( ); //測試當前檔案是否是檔案(不是目錄)
  boolean isDirectory( ); //測試當前檔案是否是目錄
 ◇ 普通檔案資訊和工具
  long lastModified( );//得到檔案最近一次修改的時間
  long length( ); //得到檔案的長度,以位元組為單位
  boolean delete( ); //刪除當前檔案
 ◇ 目錄操作
  boolean mkdir( ); //根據當前對象產生一個由該對象指定的路徑
  String list( ); //列出目前的目錄下的檔案

 

執行個體: 

java.io  
---------------------------------------------------------------   
package  common;  
 
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);  
 
   }  
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.