Java文件file操作總結

由於一直在使用Java file功能,但是總是很混亂,今天將Java File的所有功能做一個總結。

Java文件操作我個人認爲重要的問題有:

  a:如何跨平臺問題
  b:文件編碼問題,尤其是多語言平臺情況下如何正常工作。
  c:文件讀寫效率、操作效率
  d:文件加密和文件安全
  e:文件快速檢索,強烈建議使用lence進行文件檢索及文件管理。

以下是本人做的一些整理:

一:建立文件

   File file1 = new File ("C://temp//myNote.txt"); // in Windows  這是windows文件系統下的方法
   File file2 = new File ("/tmp/myNote.txt"); // in Linux/Unix        unix文件系統的方法

最安全的建立文件的方法:

  File myFile = new File("C:" + File.separator + "jdk1.5.0" + File.separator, "File.java");

   File.separator 是文件路徑符號。
  System.out.println(myFile.getName());//取得文件名稱的方法
  System.out.println(myFile.getPath());//取得文件路徑的方法
  System.out.println(myFile.isAbsolute());//判斷文件是否完整
  System.out.println(myFile.getParent());//取得文件的根目錄
  System.out.println(myFile.exists());//判斷文件是否存在
  System.out.println(myFile.isDirectory());//判斷是否是目錄
  System.out.println(myFile.isFile());//判斷是否是文件
  System.out.println(myFile.isHidden());//判斷是否是隱藏文件
  System.out.println(myFile.canRead());//判斷是否可讀
  System.out.println(myFile.canWrite());//判斷是否可寫

  File myFile_A = new File("C:" + File.separator);
       for(String s: myFile_A.list()){//讀取某個目錄下所有文件
       System.out.println(s);
       }

    File myFile_C=new File("d:/test.txt");
           System.out.println(new Date(myFile_C.lastModified()));//最後一次編輯時間
       myFile_C.renameTo(new File("c:/text.txt.bak"));//從命名
       myFile_C.setReadOnly();//設置爲只讀
二:文件過濾方法

   java提供了很好的文件過濾藉口:FilenameFilter 過濾以後的文件可以用listFiles顯示出來。效率還是非常高的。

import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
/**
* 文件過濾器過濾類
* @author fb
*/
class FileListFilter implements FilenameFilter {
 private String name;
 private String extension;
 public FileListFilter(String name, String extension) {
   this.name = name;
   this.extension = extension;
 }
 public boolean accept(File directory, String filename) {
   boolean fileOK = true;
   if (name != null) {
     fileOK = filename.startsWith(name);
   }
   if (extension != null) {
     fileOK = filename.endsWith('.' + extension);
   }
   return fileOK;
 }
}
測試方法:

import java.io.File;
import java.io.FilenameFilter;
import java.util.Date;
/**
* 文件過濾器   運行函數
* @author fb
*/
public class Run_FileListFilter {
 public static void main(String[] args) {
     File myDir = new File("d:/");
     FilenameFilter select = new FileListFilter("F", "txt");
     File[] contents = myDir.listFiles(select);
     for (File file : contents) {
       System.out.println(file + " is a " + (file.isDirectory() ? "directory" : "file")
           + " last modified on/n" + new Date(file.lastModified()));
     }
 }
}
三:建立目錄、文件、臨時文件、刪除文件或目錄
import java.io.File;
import java.io.IOException;

public class MakeDir {
 
 public static void main(String[] args) {
   File myFile=new File("D:/myFubin/");
   if(myFile.mkdir()){//單級目錄
     System.out.println("建立目錄成功");
   }else{
     System.out.println("建立目錄失敗");
   }
   
   File myFile_A=new File("D:/myFubin/test/");
   if(myFile_A.mkdirs()){//多級目錄
     System.out.println("建立目錄成功");
   }else{
     System.out.println("建立目錄失敗");
   }
   
   File file = new File("d://myFubin//test.txt");
   try {
     file.createNewFile();//建立空文件
   } catch (IOException e) {
     e.printStackTrace();
   }
   
   System.out.println(file.canRead());
   
   if(file.delete()){//刪除文件或刪除目錄
     //刪除文件的另外一個方法:file.deleteOnExit() 這種方法是在程序退出的時候將文件刪除
     System.out.println("刪除成功");
   }else{
     System.out.println("刪除失敗");
   }  
   
   try {
     File  tmp = File.createTempFile("foo", "tmp");//建立臨時文件
     System.out.println("剛纔建立的臨時文件在:" + tmp.getCanonicalPath());
   } catch (IOException e) {
     e.printStackTrace();
   }
   
   
 }
 
}

 

import java.io.File;
/**
* @author fb  www.cujava.com
* 文件操作裏Java 1.6 新功能:查詢磁盤空間
*/
public class SpaceChecker {

  public static void main(String[] args) {
  File[] roots = File.listRoots();//取得所有的根,如果是windows系統那麼將取得所有的磁盤
      for (int i = 0; i < roots.length; i++) {
        System.out.println(roots[i]);
        System.out.println("Free space = " + roots[i].getFreeSpace());
        System.out.println("Usable space = " + roots[i].getUsableSpace());
        System.out.println("Total space = " + roots[i].getTotalSpace());
        System.out.println();
      }
  }
}

發佈了49 篇原創文章 · 獲贊 8 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章