Java文件操作的基本概念和簡單操作

                                   Java文件的基本操作知識點


提綱:


一:基本概念彙總:

    1.學習文件操作的必要性:

   2.文件操作的概念:

   3.文件的概念:

    4.選擇文件存儲的條件:

    5.文件存儲的特點:

    6.文件的表示和訪問:


二:File類的具體文件操作

    1.File類的基本介紹:

    2.File類的方法使用示例;

          (1).File 對象代表文件路徑:

                 (2).File類的常用方法:

          (3).較爲完整的文件操作示例:

          (4).顯示某個目錄下的所有文件示例:

          (5)刪除某個目錄下的所有文件示例:  

正文:


一:基本概念彙總:


1.學習文件操作的必要性:

        在 IO 操作中,需要使用的數據源有很多,作爲一個 IO 技術的初學者,從讀寫文件開始學習 IO 技術是一個比較好的選擇。因爲文件是一種常見的數據源,而且讀寫文件也是程序員進行 IO 編程的一個基本能力。


2.文件操作的概念:

    在程序中經常需要將數據存儲到文件中,也需要按照正確的格式來讀取各種數據。


3.文件的概念:

      文件 (File)是最常見的數據源之一,


4.選擇文件存儲的條件:

(1).對於數據的讀寫速度要求不高

(2).存儲的數據量不是很大


5.文件存儲的特點:

(1).存儲在文件內部的數據是永久存儲的,而內存中的數據在程序退出或計算機關機以後,數據就丟失了。

(2).在不同的存儲介質中,文件中的數據都是以一定的順序依次存儲起來,在實際讀取時由硬件以及操作系統完成對於數據的控制,保證程序讀取到的數據和存儲的順序保持一致。

(3).文件的存儲介質有很多,由於 IO 類設計時,從數據源轉換爲流對象的操作由 API 實現了,所以存儲介質的不同對於程序員來說是透明的,和實際編寫代碼無關。


6.文件的表示和訪問:      

       文件的路徑+文件的全名.

(1) 絕對路徑和相對路徑

       絕對路徑:指完整路徑.

             好處:唯一指定文件.

              缺點:受到的限制很大,且不能在不同的操作系統下運行。

       相對路徑:文件的部分路徑.

              好處:更通用地代表位置,增加靈活性。


注意:

代碼中文件路徑的書寫形式:

(c:\\test\\Hello.java)或(c:/test/Hello.java),因爲 ’\’ 是 Java 語言中的特殊字符。

 static String separator
與系統有關的默認名稱分隔符,爲了方便,它被表示爲一個字符串。

("c:"+File.separator+"test"+File.separator+"Hello.java"),可以程序的跨平臺.

(2) 文件名稱

      文件名稱一般形式:“文件名 . 後綴名”。文件名錶明文件作用,後綴名錶明類型。

         文件名稱只是一個標示,方便使用,和實際存儲的文件內容沒有必然的聯繫。

         系統自動關聯後綴名和對應的程序便於打開文件。

         編碼時注意文件名的大小寫和後綴名。

     

二:File類的具體文件操作


    1.File類的基本介紹:

    

     在java.io包中的File類,用來將文件或者文件夾封裝成對象,方便對文件與文件夾的屬性信息進行操作。

     可以方便的代表文件的概念,以及存儲一些對於文件的基本操作.

      File 類的對象代表具體的文件路徑,絕對路徑,相對路徑和文件夾(特殊的路徑)均可以 


    2.File類的方法使用示例;


 (1).File 對象代表文件路徑

創建的文件對象示例:


方法:

 public File(String pathname)

示例:

File f1 = new File(“d:\\test\\1.txt”);

File f2 = new File(“1.txt”);

File f3 = new File(“e:\\abc”);


方法:

public File(String parent, String child)

使用父路徑和子路徑結合,實現代表文件路徑。

示例:

 File f4 = new File(“d:\\test\\”,”1.txt”);


方法:

............

示例:


(2),File類的常用方法:


方法:

 boolean createNewFile()

創建文件,

當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件。

示例:

try {

boolean b = f3.createNewFile();

} catch (Exception e) {

e.printStackTrace();

}

作用:創建指定的文件。該方法只能用於創建文件,不能用於創建文件夾,且文件路徑中包含的文件夾必須存在。


方法:

  createTempFile(String prefix, String suffix) 

在默認臨時文件目錄中創建一個空文件,使用給定前綴和後綴生成其名稱。static                   createTempFile(String prefix, String suffix, File directory)
在指定目錄中創建一個新的空文件,使用給定的前綴和後綴字符串生成其名稱。

示例:

        //臨時文件對象的創建
File tmpFile1 = File.createTempFile("####", "%%%%");
File tmpFile2 = File.createTempFile("ttttt", ".tmp", tempDir);
File tmpFile3 = File.createTempFile("$$$", " ", null);

方法:

voiddeleteOnExit()
在虛擬機終止時,請求刪除此抽象路徑名錶示的文件或目錄。


示例:

    //臨時文件對象的刪除
    tmpFile1.deleteOnExit();

    tmpFile2.deleteOnExit();
    tmpFile3.deleteOnExit();


(3).較爲完整的文件操作示例:


import java.io.File;

/*

 * 日期:2012-03-07
 * 功能:演示File類的常用方法的使用
 * 
 */

public class FileDemo1 {

public static void main(String[] args) {

//////////////////////////////////////////////////////////////

// File(String pathname)
// 通過將給定路徑名字符串轉換爲抽象路徑名來創建一個新 File 實例。
File f1 = new File("d:\\編程生成的文件1.txt");
//創建的文件的路徑在哪兒呢?
//File f1 = new File("編程生成的文件1.txt");


File f2 = new File("d:\\編程創建的文件夾1");
File f3 = new File("d:\\編程創建的文件夾2\\創建父類不存在的文件夾1");

// File(File parent, String child)
// 根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File 實例。


// File(URI uri)
// 通過將給定的 file: URI 轉換爲一個抽象路徑名來創建一個新的 File 實例。


//////////////////////////////////////////////////////////////


//創建文件: boolean createNewFile()
// 當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件。
try {
System.out.println("創建文件f1是否成功?..."+f1.createNewFile());
} catch (Exception e) {
e.printStackTrace();
}

//////////////////////////////////////////////////////////////


        //創建文件夾(父類存在):boolean mkdir()
        //創建此抽象路徑名指定的目錄。 
        System.out.println("\n創建文件夾f2是否成功?..."+f2.mkdir());


        //創建文件夾(父類不存在):boolean mkdirs() 
        //創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。 
        System.out.println("創建父類不存在的文件夾f3是否成功?..."+f3.mkdirs()+"\n");

//////////////////////////////////////////////////////////////

// File getAbsoluteFile()
// 返回此抽象路徑名的絕對路徑名形式。
System.out.println("文件f1的絕對路徑名形式是:" + f1.getAbsolutePath());


// String getName()
// 返回由此抽象路徑名錶示的文件或目錄的名稱。
System.out.println("文件f3的文件名是:" + f1.getName());


// String getParent()
// 返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。
System.out.println("文件f1的父目錄的路徑名是:" + f1.getParent());


// boolean isDirectory()
// 測試此抽象路徑名錶示的文件是否是一個目錄。
System.out.println("文件f1是否是目錄?..." + f1.isDirectory());


// boolean isFile()
// 測試此抽象路徑名錶示的文件是否是一個標準文件。
System.out.println("文件f1是否是文件?..." + f1.isFile());


// long length()
// 返回由此抽象路徑名錶示的文件的長度。
System.out.println("文件f1的長度是:" + f1.length()+"\n");


//////////////////////////////////////////////////////////////

        //File(String parent, String child)
      //根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例。
      File f4 = new File("d:\\", "編程生成的文件2.txt");
      
//boolean exists()
// 測試此抽象路徑名錶示的文件或目錄是否存在。
System.out.println("文件f4是否存在?..." + f4.exists()+"\n");


//////////////////////////////////////////////////////////////

File f5 = new File("d:\\編程軟件和工具");

// String[] list()
// 返回一個字符串數組,這些字符串指定此抽象路徑名錶示的目錄中的文件和目錄。
String[] str = f5.list();
for (int i = 0; i < str.length; i++) {
System.out.println("獲得當前文件夾f5下所有文件和文件夾名稱..." + str[i]);
}
System.out.println();

// File[] listFiles()
// 返回一個抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中的文件。
File[] f6 = f5.listFiles();
for (int i = 0; i < f6.length; i++) {
System.out.println("文件f5下的文件對象有..." + f6[i]);
}
System.out.println();
   
//////////////////////////////////////////////////////////////        
       
        //boolean renameTo(File dest) 
        //重新命名此抽象路徑名錶示的文件。 
        File f7 = new File("d:\\編程生成的文件3.txt");
        System.out.println("修改文件f1的文件名是否成功?..."+f1.renameTo(f7));
        
        //boolean setReadable(boolean readable) 
        //設置此抽象路徑名所有者讀權限的一個便捷方法。 設置文件爲只讀
        System.out.println("設置文件f7的屬性爲只讀是否成功?..."+f7.setReadOnly());             

}
}


(4)顯示某個目錄下的所有文件示例:


import java.io.*;

/*

 * 日期:2012-03-08
 * 功能:
 * 顯示某個文件夾下的所有文件和文件夾,原理是輸出當前名稱,
 * 然後判斷當前File對象是文件還是文件夾,如果則獲得該文件夾下
 * 的所有子文件和子文件夾,並遞歸調用該方法實現。
 */

public class ShowAllFileDemo {
public static void main(String[] args) {
File f1 = new File("d:\\億度空間下載");
ShowAllFile(f1);
}

// 遞歸函數的定義
public static void ShowAllFile(File f1) {

File[] f2 = f1.listFiles();
for (int i = 0; i < f2.length; i++) {
System.out.println("文件對象有:..." + f2[i]);

if (f2[i].isDirectory()) {
ShowAllFile(f2[i]);
}
}
System.out.println();
}
}

(5)刪除某個目錄下的所有文件示例:


import java.io.*;

/*
 * 日期:2012-03-08
 * 功能:
 * 刪除某個文件夾下的所有文件和文件夾,原理是判斷是否是文件,
 * 如果是文件則直接刪除,如果是文件夾,則獲得該文件夾下所有的子文件和子文件夾,
 * 然後遞歸調用該方法處理所有子文件和子文件夾,然後將空文件夾刪除。
 * 
 */

public class DeleteAllFileDemo {
public static void main(String[] args) {

               File f1 = new File("d:\\常實驗報告 - 副本");
DeleteAllFile(f1);

}

// 遞歸函數的定義
public static void DeleteAllFile(File f1) {

File[] f2 = f1.listFiles();

for (int i = 0; i < f2.length; i++) {
if (f2[i].isFile()) {
f2[i].delete();
}
if (f2[i].isDirectory()) {
DeleteAllFile(f2[i]);
}
f1.delete();
}
}
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章