目錄
一、文件的概念
二、文件系統(tǒng)
三、文件類型
四、使用 File 類進(jìn)行文件操作
4.1 File 類中的 pathSeparator 屬性
4.2?File 類構(gòu)造方法
4.3?File 類常用方法
一、文件的概念
什么是文件? |
廣義上的“文件”是指抽象化的操作系統(tǒng)中的硬件設(shè)備和軟件資源,目的是對這些“文件”進(jìn)行同一的管理。 |
狹義上的“文件(FIle)”則只是指在硬件設(shè)備中保存的數(shù)據(jù),這些數(shù)據(jù)往往以一個一個的單位進(jìn)行保存,每一個獨立的單位就稱為“文件”。 |
二、文件系統(tǒng)
1)什么是文件系統(tǒng)? |
是一個“樹形結(jié)構(gòu)”實現(xiàn)的系統(tǒng),用于組織管理文件。 |
操作系統(tǒng)通過“目錄”對文件進(jìn)行組織管理。利用目錄的層次結(jié)構(gòu)來描述文件所在位置,即“路徑”。 |
由于“樹形結(jié)構(gòu)”的特點,每個文件都會有自己的唯一路徑。通過路徑,就可以找到文件。 |
2)絕對路徑和相對路徑 | |
絕對路徑 | 從“樹形結(jié)構(gòu)”的根節(jié)點開始描述,一直到葉子節(jié)點(即文件),這樣的描述方式稱為文件的“絕對路徑”(absolute path)。在windows系統(tǒng)中,絕對路徑從盤符開始描述。 |
相對路徑 | 從指定的任意節(jié)點出發(fā),該節(jié)點被稱為“基準(zhǔn)目錄”。以該節(jié)點為基準(zhǔn),對文件進(jìn)行描述,這樣的描述方式稱為“相對路徑”(relative path)。想要得到相對路徑,必須先明確基準(zhǔn)目錄。 |
3)相對路徑的兩個符號 | |
. | “ . ”號表示當(dāng)前目錄。 |
.. | “ .. ”號表示當(dāng)前目錄的上一級目錄。 |
4)表示相對路徑的示例 |
基準(zhǔn)目錄:D:/Test/A/ 相對路徑(當(dāng)前目錄下的test1.txt文件):./test1.txt 相對路徑(上級目錄下,B文件夾中的test2.txt文件):../B/test2/txt |
三、文件類型
有哪些文件類型? | |
文本文件 | 文本文件是指保存合法字符的文件,字符以字符串形式保存。合法字符是指被字符集編碼的文本,如“UTF-8”等字符集。 |
二進(jìn)制文件 | 二進(jìn)制文件是指文件保存的是二進(jìn)制數(shù)據(jù)。 |
四、使用 File 類進(jìn)行文件操作
在 Java 中,文件的操作分為兩類 | |
操作文件系統(tǒng) | 通過 File 類,在系統(tǒng)中進(jìn)行增、刪、查等操作。(下文介紹該類) |
操作文件內(nèi)容 | 通過 流對象,在文件中讀取或?qū)懭雰?nèi)容。 |
4.1 File 類中的 pathSeparator 屬性
pathSeparator 屬性是什么? |
不同的操作系統(tǒng)使用“/”或“\”作為目錄分隔符,為使兩種情況都能被成功識別,F(xiàn)ile 中使用了?pathSeparator 屬性來對這兩個符號做自適應(yīng)。 |
4.2?File 類構(gòu)造方法
File 類中常用的構(gòu)造方法有以下三種 | |
public File(File parent, String child) |
根據(jù)父目錄和子路徑,創(chuàng)建新的 File 實例。 |
public File(String pathname) |
根據(jù)文件路徑,創(chuàng)建新的 File 實例。路徑可以是絕對或相對路徑。 |
public File(String parent, String child) |
根據(jù)父目錄和子路徑,創(chuàng)建新的 File 實例。 |
4.3?File 類常用方法
File 類中有以下常用的方法 | |
public String getParent() |
返回 File 對象的父目錄 |
public String getName() |
返回 File 對象的文件名 |
public String getPath() |
返回 File 對象的文件路徑 |
public String getAbsolutePath() |
返回 File 對象的絕對路徑 |
public String getCanonicalPath() |
返回 File 對象,修飾過的絕對路徑 |
public boolean exists() |
判斷? File 對象是否真實存在 |
public boolean isDirectory() |
判斷 File 對象是否為目錄 |
public boolean isFile() |
判斷 File 對象是否為文件 |
public boolean createNewFile() |
創(chuàng)建新的 File 對象 |
public boolean delete() |
刪除 File 對象 |
public void deleteOnExit() |
在進(jìn)程結(jié)束后,刪除?File 對象 |
public String[] list() |
返回 File 對象目錄下的所有文件名 |
public File[] listFiles() |
返回 File 對象目錄下的所有文件名 |
public boolean mkdirs() |
創(chuàng)建 File?對象的目錄,包括中間目錄 |
public boolean renameTo(File dest) |
修改文件名、文件路徑;修改文件路徑與剪切粘貼類似; |
public boolean canRead() |
判斷是否對文件有可讀權(quán)限 |
public boolean canWrite() |
判斷是否對文件有可寫權(quán)限 |
代碼演示?getAbsolutePath() 和?getCanonicalPath() :
//文件的基準(zhǔn)目錄是"C:/Test/A"。
public static void main(String[] args) throws IOException {
File file = new File("./test.txt");
System.out.println("AbsolutePath-> "+file.getAbsolutePath());
System.out.println("CanonicalPath-> "+file.getCanonicalPath());
}
//運行結(jié)果:
AbsolutePath-> C:\Test\A\.\test.txt
CanonicalPath-> C:\Test\A\test.txt
可以看出AbsolutePath就是父目錄和相對路徑的字符串連接。
而CanonicalPath則是經(jīng)過了修飾處理的。
代碼演示?exists()、isDirectory()、isFile() 和 createNewFile() :
public static void main(String[] args){
File file = new File("C:/Test/A/test.txt");
System.out.println("文件是否存在:" + file.exists());
System.out.println("這是一個目錄:" + file.isDirectory());
System.out.println("這是一個文件:" + file.isFile());
System.out.println("創(chuàng)建新文件:" + file.createNewFile());
}
//運行結(jié)果:
文件是否存在:false
這是一個目錄:false
這是一個文件:true
創(chuàng)建新文件:true
可以看出,使用 File 構(gòu)造方法時,傳入的文件路徑并不一定需要真實存在。
通過 exists() 可以判斷文件是否真實存在。
通過 createNewFile() 可以創(chuàng)建出一個新文件,文件的路徑與構(gòu)造方法的參數(shù)相同。
代碼演示?list() 和 listFiles() :
//目錄"C:/Test"中,存在文件夾"A"、文件夾"B"和文件"Test.txt"。
public static void main(String[] args){
File f = new File("D:/Learn/E-JavaEE");
File[] files = f.listFiles();
for (File file : files){
System.out.println(file.getName());
}
}
//運行結(jié)果:
Test.txt
A
B
list() 和 listFiles() 用法相同,只是返回值不同。
list() 返回字符串?dāng)?shù)組。
listFiles() 返回文件數(shù)組。
代碼演示?renameTo() :
public static void main6(String[] args) throws IOException {
File src = new File("D:/Test/A/test.txt");
File dest = new File("D:/Test/B/test1.txt");
System.out.println("重命名:" + src.renameTo(dest));
}
//運行結(jié)果:
重命名:true
可以看到,雖然方法名稱為“重命名”,但是重命的可以不只是名,還可以是目錄。
這就達(dá)成了剪切粘貼的效果。
閱讀指針 -> 《文件IO -- 流對象操作文件內(nèi)容》文章來源:http://www.zghlxwxcb.cn/news/detail-759023.html
<JavaEE> 文件IO -- 數(shù)據(jù)流和文件內(nèi)容操作(Reader 和 Writer 、InputStream 和 OutputStream)-CSDN博客文章瀏覽閱讀280次。介紹了數(shù)據(jù)流的概念和使用,著重介紹了字符流中的 Reader 類和 Writer 類、字節(jié)流中的 InputStream類和 OutputStream類https://blog.csdn.net/zzy734437202/article/details/134972142文章來源地址http://www.zghlxwxcb.cn/news/detail-759023.html
到了這里,關(guān)于<JavaEE> 文件IO -- File類和文件操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!