java File操作實例

          File類

          一個File類的對象,表示了磁盤上的文件或目錄。
          File類提供了與平臺無關的方法來對磁盤上的文件或目錄進行操作。
          ------------
          Java API:
          ------------
          java.io
          類 File
          java.lang.Object
            java.io.File
          所有已實現的接口:
          Serializable, Comparable<File>
          public class File
          extends Object
          implements Serializable, Comparable<File>
          文件和目錄路徑名的抽象表示形式。

          用戶界面和操作系統使用與系統相關的路徑名字符串 來命名文件和目錄。此類呈現分層路徑名的一個抽象的、與系統無關的視圖。抽象路徑名 有兩個組件:
          一個可選的與系統有關的前綴 字符串,比如盤符,"/" 表示 UNIX 中的根目錄,"\\\\" 表示 Microsoft Windows UNC 路徑名,以及
          零個或更多字符串名稱 的序列。
          除了最后一個,抽象路徑名中的每個名稱代表一個目錄;最后一個名稱既可以代表目錄,也可以代表文件。空的 抽象路徑名沒有前綴和名稱序列。

          路徑名字符串與抽象路徑名之間的轉換與系統有關。將抽象路徑名轉換為路徑名字符串時,每個名稱與下一個名稱之間由單個默認分隔符字符 隔開。默認名稱分隔符由系統屬性 file.separator 定義,也可以從此類的公共靜態字段 separator 和 separatorChar 中得到。將路徑名字符串轉換為抽象路徑名時,可以使用默認名稱分隔符或者受基礎系統支持的其他任何名稱分隔符來分隔其中的名稱。

          無論是抽象路徑名還是字符串路徑名,都可以是絕對 路徑名或相對 路徑名。絕對路徑名是完整的路徑名,不需要任何其他信息就可以定位自身表示的文件。相反,相對路徑名必須使用來自其他路徑名的信息進行解釋。默認情況下,java.io 包中的類總是根據當前用戶目錄來分析相對路徑名。此目錄由系統屬性 user.dir 指定,通常是 Java 虛擬機的調用目錄。

          前綴的概念用于處理 UNIX 平臺的根目錄,以及 Microsoft Windows 平臺上的盤符、根目錄和 UNC 路徑名,如下所示:
          對于 UNIX 平臺,絕對路徑名的前綴始終是 "/"。相對路徑名沒有前綴。表示根目錄的絕對路徑名的前綴為 "/" 并且沒有名稱序列。
          對于 Microsoft Windows 平臺,包含盤符的路徑名的前綴由驅動器名和一個 ":" 組成:如果路徑名是絕對路徑名,后面可能跟著 "\\"。UNC 路徑名的前綴是 "\\\\";主機名和共享名是名稱序列中的前兩個名稱。沒有指定驅動器的相對路徑名無前綴。

          File 類的實例是不可變的;也就是說,一旦創建,File 對象表示的抽象路徑名將永不改變。


          從以下版本開始:
          JDK1.0
          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          構造方法摘要
          File(File parent, String child)
                    根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File 實例。
          File(String pathname)
                    通過將給定路徑名字符串轉換成抽象路徑名來創建一個新 File 實例。
          File(String parent, String child)
                    根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例。
          File(URI uri)
                    通過將給定的 file: URI 轉換成一個抽象路徑名來創建一個新的 File 實例。

          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------

          1、創建文件和文件夾
          ------------
          Java API:
          ------------
          createNewFile
          public boolean createNewFile()
                                throws IOException
          當且僅當不存在具有此抽象路徑名指定的名稱的文件時,原子地創建由此抽象路徑名指定的一個新的空文件。檢查文件是否存在,如果不存在則創建該文件,這是單個操作,對于其他所有可能影響該文件的文件系統活動來說,該操作是原子的。

          注:此方法不應 用于文件鎖定,因為所得到的協議可能無法可靠地工作。應該使用 FileLock 機制替代。

          返回:
          如果指定的文件不存在并成功地創建,則返回 true;如果指定的文件已經存在,則返回 false
          拋出:
          IOException - 如果發生 I/O 錯誤
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件進行寫入訪問
          從以下版本開始:
          1.2
          -------------------------------------------------------------------------------
          Demo1: FileDemo.java
          創建一個文件,簡單起見,異常由JVM處理
          -------------------------------------------------------------------------------


           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File f = new File("1.txt");
           7  f.createNewFile();
           8 }
           9
          10}
          11-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------

          ------------
          Java API:
          ------------
          mkdir
          public boolean mkdir()
          創建此抽象路徑名指定的目錄。

          返回:
          當且僅當已創建目錄時,返回 true;否則返回 false
          拋出:
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創建指定的目錄

          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo2:在當前文件夾中創建一個文件夾test
          -------------------------------------------------------------------------------


           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File f = new File("test");
           7  f.mkdir();
           8 }
           9}
          10-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo3:創建一個根目錄下的文件夾test
          方法名:mkdir()
           注意:'\'要使用轉義字符'\\'來代替
          -------------------------------------------------------------------------------


           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File f = new File("c:\\test");
           7  f.mkdir();
           8 }
           9}
          10------------
          Java API:
          ------------
          mkdirs
          public boolean mkdirs()
          創建此抽象路徑名指定的目錄,包括創建必需但不存在的父目錄。注意,如果此操作失敗,可能已成功創建了一些必需的父目錄。

          返回:
          當且僅當已創建該目錄以及所有必需的父目錄時,返回 true;否則返回 false
          拋出:
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法不允許驗證指定目錄和所有必需的父目錄是否存在;或者 SecurityManager.checkWrite(java.lang.String) 方法不允許創建指定的目錄和所有必需的父目錄
          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo4:創建一個根目錄下的文件夾test
          方法名:mkdirs()
          -------------------------------------------------------------------------------

           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File f = new File("c:\\test\\test\\test");
           7  f.mkdir();
           8 }
           9
          10}-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo5:在當前目錄下創建多級子目錄(注意格式,先文件名,再'\\')
             如果是(\\test\\test)格式,則會在當前文件所在的盤符的根目錄下創建目錄
          -------------------------------------------------------------------------------


           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File f = new File("c:\\test\\test\\test");
           7  f.mkdir();
           8 }
           9
          10}
          11
          12-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo6:直接在某特定目錄下新建文件
          -------------------------------------------------------------------------------

           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File f = new File("c:\\test\\test\\1.txt");
           7  f.createNewFile();
           8 }
           9
          10}
          11-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
           
          2、創建跨平臺代碼

          -------------------------------------------------------------------------------
          字段摘要
          static String pathSeparator
                    與系統有關的路徑分隔符字符,出于方便考慮,它被表示為一個字符串。
          static char pathSeparatorChar
                    與系統有關的默認路徑分隔符字符。
          static String separator
                    與系統有關的默認名稱分隔符,出于方便考慮,它被表示為一個字符串。
          static char separatorChar
                    與系統有關的默認名稱分隔符
          -------------------------------------------------------------------------------
          使用下面的構造方法:
          ------------
          Java API:
          ------------
          File
          public File(File parent,
                      String child)
          根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File 實例。

          如果 parent 為 null,則創建一個新的 File 實例,這與調用給定 child 路徑名字符串的單參數 File 構造方法的效果一樣。

          否則,parent 抽象路徑名用于表示目錄,而 child 路徑名字符串用于表示目錄或文件。如果 child 路徑名字符串是絕對路徑名,則用與系統有關的方式將它轉換成一個相對路徑名。如果 parent 是空抽象路徑名,則新的 File 實例是通過將 child 轉換成抽象路徑名并根據與系統有關的默認目錄來分析結果而創建的。否則,將每個路徑名字符串轉換成一個抽象路徑名,并根據父抽象路徑名分析子抽象路徑名。

          參數:
          parent - 父抽象路徑名
          child - 子路徑名字符串
          拋出:
          NullPointerException - 如果 child 為 null
          -------------------------------------------------------------------------------
          Demo7:直接在某特定目錄下新建文件,而且是跨平臺的
          -------------------------------------------------------------------------------

           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File fDir = new File(File.separator);
           7  String strFile = "test" + File.separator
           8      + "test" + File.separator
           9      + "1.txt";
          10  File f = new File(fDir, strFile);
          11 
          12  f.createNewFile();
          13 }
          14
          15}
          16-------------------------------------------------------------------------------
          運行結果:在X:\test\test下創建了1.txt文件
          -------------------------------------------------------------------------------
           
          ------------
          Java API:
          ------------
          delete
          public boolean delete()
          刪除此抽象路徑名表示的文件或目錄。如果此路徑名表示一個目錄,則此目錄必須為空才能刪除。

          返回:
          當且僅當成功刪除文件或目錄時,返回 true;否則返回 false
          拋出:
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒絕對文件進行刪除訪問
           

          3、刪除文件
          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo8:刪除某個文件
          -------------------------------------------------------------------------------

           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File fDir = new File(File.separator);
           7  String strFile = "test" + File.separator
           8      + "test" + File.separator
           9      + "1.txt";
          10  File f = new File(fDir, strFile);
          11 
          12  f.delete();
          13 }
          14
          15}
          16-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
           ------------
          Java API:
          ------------
          deleteOnExit
          public void deleteOnExit()
          在虛擬機終止時,請求刪除此抽象路徑名表示的文件或目錄。僅在虛擬機正常終止時,才會試圖執行刪除操作,這在 Java Language Specification 中已定義。

          一旦已經請求執行刪除操作,就無法取消該請求。所以應小心使用此方法。

          注:此方法不應 用于文件鎖定,因為所得到的協議可能無法可靠地工作。應該使用 FileLock 設施替代。

          拋出:
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒絕對文件進行刪除訪問
          從以下版本開始:
          1.2
          另請參見:
          delete()
          -------------------------------------------------------------------------------
          Demo9:程序結束后刪除某個文件
          -------------------------------------------------------------------------------

           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File fDir = new File(File.separator);
           7  String strFile = "test" + File.separator
           8      + "test" + File.separator
           9      + "1.txt";
          10  File f = new File(fDir, strFile);
          11 
          12  f.createNewFile();
          13 
          14  f.deleteOnExit();
          15  Thread.sleep(3000); // 程序休眠3秒
          16 }
          17
          18}
          19-------------------------------------------------------------------------------
          運行結果:程序運行,創建文件,然后休眠3秒,程序結束,刪除文件。
          -------------------------------------------------------------------------------
           
           4、創建臨時文件:
           
          ------------
          Java API:
          ------------
          createTempFile
          public static File createTempFile(String prefix,
                                            String suffix)
                                     throws IOException
          在默認臨時文件目錄中創建一個空文件,使用給定前綴和后綴生成其名稱。調用此方法等同于調用 createTempFile(prefix, suffix, null)。

          參數:
          prefix - 用于生成文件名的前綴字符串;至少必須是三個字符長
          suffix - 用于生成文件名的后綴字符串;可能是 null,在這種情況下,將使用后綴 ".tmp"
          返回:
          表示新創建的空文件的抽象路徑名
          拋出:
          IllegalArgumentException - 如果 prefix 參數包含少于三個的字符
          IOException - 如果無法創建文件
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創建文件
          從以下版本開始:
          1.2
          -------------------------------------------------------------------------------
          Demo10:創建臨時文件
          -------------------------------------------------------------------------------

           1 import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  for( int i = 0; i < 5; i++){
           7   File.createTempFile("tempfile", ".tmp");
           8  }
           9 }
          10
          11}-------------------------------------------------------------------------------
          運行結果:在默認的Temp文件夾下創建5個臨時文件
          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo11:創建臨時文件,然后程序結束后刪除臨時文件
          -------------------------------------------------------------------------------

           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  for( int i = 0; i < 5; i++){
           7   File f = File.createTempFile("tempfile", ".tmp");
           8   f.deleteOnExit();
           9  }
          10  Thread.sleep(3000);
          11 }
          12
          13}-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
           
          5、list方法:
          ------------
          Java API:
          ------------
          list
          public String[] list()
          返回由此抽象路徑名所表示的目錄中的文件和目錄的名稱所組成字符串數組。

          如果此抽象路徑名并不表示一個目錄,則此方法將返回 null。否則,為目錄中的每個文件或目錄返回一個字符串數組。表示目錄本身及其父目錄的名稱不包括在結果中。每個字符串是一個文件名,而不是一條完整路徑。

          不保證所得數組中的相同字符串將以特定順序出現,特別是不保證它們按字母順序出現。

          返回:
          由此抽象路徑名所表示的目錄中的文件和目錄的名稱所組成字符串數組。如果目錄為空,則數組也將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
          拋出:
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對目錄進行讀取訪問
          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo12:列出文件夾下面的所有文件名和文件夾名
          -------------------------------------------------------------------------------

           1import java.io.File;
           2
           3public class FileDemo {
           4
           5 public static void main(String[] args) throws Exception {
           6  File fDir = new File(File.separator);
           7  String strFile = "test" + File.separator
           8      + "test";
           9  File f = new File(fDir, strFile);
          10  String[] names = f.list();
          11 
          12  for (int i = 0; i < names.length; i++) {
          13   System.out.println(names[i]);
          14  }
          15 }
          16
          17}
          18-------------------------------------------------------------------------------
          -------------------------------------------------------------------------------

          6、過濾顯示文件
          ------------
          Java API:
          ------------
          list
          public String[] list(FilenameFilter filter)
          返回由包含在目錄中的文件和目錄的名稱所組成的字符串數組,這一目錄是通過滿足指定過濾器的抽象路徑名來表示的。此方法的行為與 list() 方法相同,除了所返回數組中的字符串必須滿足過濾器。如果給定 filter 為 null,則接受所有名稱。否則,當且僅當在此抽象路徑名和它所表示的目錄中的文件名或目錄名上調用過濾器的 FilenameFilter.accept(java.io.File, java.lang.String) 方法返回 true 時,該名稱才滿足過濾器。

          參數:
          filter - 文件名過濾器
          返回:
          由此抽象路徑名所表示的目錄中的文件和目錄的字符串數組,該字符串被給定 filter 所接受。如果目錄為空,或者沒有名稱被過濾器接受,則該數組將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
          拋出:
          SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對目錄進行讀取訪問

          ------------
          Java API:
          ------------
          java.io
          接口 FilenameFilter
          public interface FilenameFilter

          實現此接口的類實例可用于過濾器文件名。Abstract Window Toolkit 的文件對話框組件使用這些實例過濾 File 類的 list 方法中的目錄清單。


          從以下版本開始:
          JDK1.0
          另請參見:
          FileDialog.setFilenameFilter(java.io.FilenameFilter), File, File.list(java.io.FilenameFilter)

          方法摘要
           boolean accept(File dir, String name)
                    測試指定文件是否應該包含在某一文件列表中。

           

          方法詳細信息

          accept
          boolean accept(File dir,
                         String name)
          測試指定文件是否應該包含在某一文件列表中。

          參數:
          dir - 被找到的文件所在的目錄。
          name - 文件的名稱。
          返回:
          當且僅當該名稱應該包含在文件列表中時返回 true;否則返回 false。
          -------------------------------------------------------------------------------
          String的方法IndexOf的API:
          ------------
          Java API:
          ------------
          indexOf
          public int indexOf(String str)
          返回第一次出現的指定子字符串在此字符串中的索引。返回的整數是
           this.startsWith(str, k)
           
          為 true 的最小值 k。

          參數:
          str - 任意字符串。
          返回:
          如果字符串參數作為一個子字符串在此對象中出現,則返回第一個這樣的子字符串的第一個字符的索引;如果它不作為一個子字符串出現,則返回 -1。
          -------------------------------------------------------------------------------
          -------------------------------------------------------------------------------
          Demo13:列出文件夾下面的所有特定后綴名的文件名,如.java

           1-------------------------------------------------------------------------------
           2import java.io.*;
           3
           4public class FileDemo {
           5
           6 public static void main(String[] args) throws Exception {
           7  File fDir = new File(File.separator);
           8  String strFile = "test" + File.separator
           9      + "test";
          10  File f = new File(fDir, strFile);
          11  String[] names = f.list(new FilenameFilter(){
          12     public boolean accept(File dir, String name){
          13      return name.indexOf(".java") != -1;
          14     }
          15    });
          16 
          17  for (int i = 0; i < names.length; i++) {
          18   System.out.println(names[i]);
          19  }
          20 }
          21
          22}
          23-------------------------------------------------------------------------------
          運行結果:列出*.java文件
          -------------------------------------------------------------------------------

          posted on 2011-03-22 09:37 Mr.lu 閱讀(466) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆檔案

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 错那县| 寿光市| 合山市| 微博| 墨脱县| 开阳县| 衡山县| 乐东| 驻马店市| 内丘县| 霍州市| 光泽县| 惠水县| 金乡县| 张家口市| 林口县| 栖霞市| 金阳县| 库伦旗| 甘肃省| 张北县| 鹿泉市| 昔阳县| 台中市| 唐海县| 英德市| 余姚市| 黔西| 合阳县| 富民县| 荣成市| 阿拉善盟| 隆德县| 江门市| 青龙| 延津县| 文山县| 来安县| 安远县| 久治县| 盱眙县|