中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

市住房住房城鄉(xiāng)建設委官方網(wǎng)站友鏈網(wǎng)

市住房住房城鄉(xiāng)建設委官方網(wǎng)站,友鏈網(wǎng),怎么做同城購物網(wǎng)站,深圳提倡居家辦公目錄 簡介一、File的構造方法二、File的常用方法1、獲取功能的方法2、絕對路徑和相對路徑3、判斷功能的方法4、創(chuàng)建、刪除功能的方法5、目錄的遍歷6、遞歸遍歷 三、RandomAccessFile1、主要方法 四、Apache FileUtils 類1、復制文件或目錄:2、刪除文件或目錄&#x…

目錄

  • 簡介
  • 一、File的構造方法
  • 二、File的常用方法
    • 1、獲取功能的方法
    • 2、絕對路徑和相對路徑
    • 3、判斷功能的方法
    • 4、創(chuàng)建、刪除功能的方法
    • 5、目錄的遍歷
    • 6、遞歸遍歷
  • 三、RandomAccessFile
    • 1、主要方法
  • 四、Apache FileUtils 類
    • 1、復制文件或目錄:
    • 2、刪除文件或目錄:
    • 3、移動文件或目錄:
    • 4、查詢文件或目錄的信息:
  • 五、Hutool FileUtil 類
    • 1、copyFile:復制文件。該方法可以將指定的源文件復制到指定的目標文件中。
    • 2、move:移動文件或目錄。該方法可以將指定的源文件或目錄移動到指定的目標文件或目錄中。
    • 3、del:刪除文件或目錄。該方法可以刪除指定的文件或目錄,如果指定的文件或目錄不存在,則會拋出異常。
    • 4、rename:重命名文件或目錄。該方法可以將指定的文件或目錄重命名為指定的新名稱。
    • 5、readLines:從文件中讀取每一行數(shù)據(jù)。

簡介

在 IO 操作中,文件的操作相對來說是比較復雜的,但也是使用頻率最高的部分,我們幾乎所有的項目中幾乎都躺著一個叫做 FileUtil 或者 FileUtils 的工具類。

java.io.File 類是專門對文件進行操作的類,注意只能對文件本身進行操作,不能對文件內容進行操作,想要操作內容,必須借助輸入輸出流。

File 類是文件和目錄的抽象表示,主要用于文件和目錄的創(chuàng)建、查找和刪除等操作。

怎么理解上面兩句話?其實很簡單!

第一句是說 File 跟流無關,File 類不能對文件進行讀和寫,也就是輸入和輸出!

第二句是說 File 可以表示D:\文件目錄1與D:\文件目錄1\文件.txt,前者是文件夾(Directory,或者叫目錄)后者是文件(file),File 類就是用來操作它倆的。

一、File的構造方法

在 Java 中,一切皆是對象,File 類也不例外,不論是哪個對象都應該從該對象的構造說起,所以我們來分析分析File類的構造方法。

比較常用的構造方法有三個:

  • File(String pathname) :通過給定的路徑來創(chuàng)建新的 File 實例。

  • File(String parent, String child) :從父路徑(字符串)和子路徑創(chuàng)建新的 File 實例。

  • File(File parent, String child) :從父路徑(File)和子路徑名字符串創(chuàng)建新的 File 實例。

看文字描述不夠生動、不夠形象、不得勁?沒事,通過舉例馬上就生動形象了,代碼如下:

// 文件路徑名
String path = "/Users/username/123.txt";
File file1 = new File(path);
// 文件路徑名
String path2 = "/Users/username/1/2.txt";
File file2 = new File(path2); -------------相當于/Users/username/1/2.txt
// 通過父路徑和子路徑字符串
String parent = "/Users/username/aaa";
String child = "bbb.txt";
File file3 = new File(parent, child); --------相當于/Users/username/aaa/bbb.txt
// 通過父級File對象和子路徑字符串
File parentDir = new File("/Users/username/aaa");
String child = "bbb.txt";
File file4 = new File(parentDir, child); --------相當于/Users/username/aaa/bbb.txt

注意,macOS 路徑使用正斜杠(/)作為路徑分隔符,而 Windows 路徑使用反斜杠(\)作為路徑分隔符。所以在遇到路徑分隔符的時候,不要直接去寫/或者\。

Java 中提供了一個跨平臺的方法來獲取路徑分隔符,即使用 File.separator,這個屬性會根據(jù)操作系統(tǒng)自動返回正確的路徑分隔符。

File 類的注意點:

  • 一個 File 對象代表硬盤中實際存在的一個文件或者目錄。
  • File 類的構造方法不會檢驗這個文件或目錄是否真實存在。
    因此無論該路徑下是否存在文件或者目錄,都不影響 File 對象的創(chuàng)建。

二、File的常用方法

File 的常用方法主要分為獲取功能、獲取絕對路徑和相對路徑、判斷功能、創(chuàng)建刪除功能的方法。

1、獲取功能的方法

  • getAbsolutePath() :返回此 File 的絕對路徑。

  • getPath() :結果和 getAbsolutePath 一致。

  • getName() :返回文件名或目錄名。

  • length() :返回文件長度,以字節(jié)為單位。

測試代碼如下【注意測試以你自己的電腦文件夾為準】:

File f = new File("/Users/username/aaa/bbb.java");
System.out.println("文件絕對路徑:"+f.getAbsolutePath());
System.out.println("文件構造路徑:"+f.getPath());
System.out.println("文件名稱:"+f.getName());
System.out.println("文件長度:"+f.length()+"字節(jié)");File f2 = new File("/Users/username/aaa");
System.out.println("目錄絕對路徑:"+f2.getAbsolutePath());
System.out.println("目錄構造路徑:"+f2.getPath());
System.out.println("目錄名稱:"+f2.getName());
System.out.println("目錄長度:"+f2.length());

注意:length() 表示文件的長度,File 對象表示目錄的時候,返回值并無意義。

2、絕對路徑和相對路徑

絕對路徑是從文件系統(tǒng)的根目錄開始的完整路徑,它描述了一個文件或目錄在文件系統(tǒng)中的確切位置。在 Windows 系統(tǒng)中,絕對路徑通常以盤符(如 C:)開始,例如 “C:\Program Files\Java\jdk1.8.0_291\bin\java.exe”。在 macOS 和 Linux 系統(tǒng)中,絕對路徑通常以斜杠(/)開始,例如 “/usr/local/bin/python3”。

相對路徑是相對于當前工作目錄的路徑,它描述了一個文件或目錄與當前工作目錄之間的位置關系。在 Java 中,相對路徑通常是相對于當前 Java 程序所在的目錄,例如 “config/config.properties”。如果當前工作目錄是 “/Users/username/project”,那么相對路徑 “config/config.properties” 就表示 “/Users/username/project/config/config.properties”。

注意:

  • 在 Windows 操作系統(tǒng)中,文件系統(tǒng)默認是不區(qū)分大小寫的,即在文件系統(tǒng)中,文件名和路徑的大小寫可以混合使用。例如,“C:\Users\username\Documents\example.txt” 和 “C:\Users\Username\Documents\Example.txt” 表示的是同一個文件。但是,Windows 操作系統(tǒng)提供了一個區(qū)分大小寫的選項,可以在格式化磁盤時選擇啟用,這樣文件系統(tǒng)就會區(qū)分大小寫。
  • 在 macOS 和 Linux 等 Unix 系統(tǒng)中,文件系統(tǒng)默認是區(qū)分大小寫的。例如,在 macOS 系統(tǒng)中,“/Users/username/Documents/example.txt” 和 “/Users/username/Documents/Example.txt” 表示的是兩個不同的文件。
// 絕對路徑示例
File absoluteFile = new File("/Users/username/example/test.txt");
System.out.println("絕對路徑:" + absoluteFile.getAbsolutePath());// 相對路徑示例
File relativeFile = new File("example/test.txt");
System.out.println("相對路徑:" + relativeFile.getPath());

3、判斷功能的方法

  • exists() :判斷文件或目錄是否存在。

  • isDirectory() :判斷是否為目錄。

  • isFile() :判斷是否為文件。

方法演示,代碼如下:

File file = new File("/Users/username/example");// 判斷文件或目錄是否存在
if (file.exists()) {System.out.println("文件或目錄存在");
} else {System.out.println("文件或目錄不存在");
}// 判斷是否是目錄
if (file.isDirectory()) {System.out.println("是目錄");
} else {System.out.println("不是目錄");
}// 判斷是否是文件
if (file.isFile()) {System.out.println("是文件");
} else {System.out.println("不是文件");
}

4、創(chuàng)建、刪除功能的方法

  • createNewFile() :文件不存在,創(chuàng)建一個新的空文件并返回true,文件存在,不創(chuàng)建文件并返回false。
  • delete() :刪除文件或目錄。如果是目錄,只有目錄為空才能刪除。
  • mkdir() :只能創(chuàng)建一級目錄,如果父目錄不存在,則創(chuàng)建失敗。返回 true 表示創(chuàng)建成功,返回 false 表示創(chuàng)建失敗。
  • mkdirs() :可以創(chuàng)建多級目錄,如果父目錄不存在,則會一并創(chuàng)建。返回 true 表示創(chuàng)建成功,返回 false 表示創(chuàng)建失敗或目錄已經(jīng)存在。

開發(fā)中一般用mkdirs();
方法測試,代碼如下:

// 創(chuàng)建文件
File file = new File("/Users/username/example/test.txt");
if (file.createNewFile()) {System.out.println("創(chuàng)建文件成功:" + file.getAbsolutePath());
} else {System.out.println("創(chuàng)建文件失敗:" + file.getAbsolutePath());
}// 刪除文件
if (file.delete()) {System.out.println("刪除文件成功:" + file.getAbsolutePath());
} else {System.out.println("刪除文件失敗:" + file.getAbsolutePath());
}// 創(chuàng)建多級目錄
File directory = new File("/Users/username/example/subdir1/subdir2");
if (directory.mkdirs()) {System.out.println("創(chuàng)建目錄成功:" + directory.getAbsolutePath());
} else {System.out.println("創(chuàng)建目錄失敗:" + directory.getAbsolutePath());
}

5、目錄的遍歷

String[] list() :返回一個 String 數(shù)組,表示該 File 目錄中的所有子文件或目錄。
File[] listFiles() :返回一個 File 數(shù)組,表示該 File 目錄中的所有的子文件或目錄。

File directory = new File("/Users/itwanger/Documents/Github/paicoding");// 列出目錄下的文件名
String[] files = directory.list();
System.out.println("目錄下的文件名:");
for (String file : files) {System.out.println(file);
}// 列出目錄下的文件和子目錄
File[] filesAndDirs = directory.listFiles();
System.out.println("目錄下的文件和子目錄:");
for (File fileOrDir : filesAndDirs) {if (fileOrDir.isFile()) {System.out.println("文件:" + fileOrDir.getName());} else if (fileOrDir.isDirectory()) {System.out.println("目錄:" + fileOrDir.getName());}
}

listFiles在獲取指定目錄下的文件或者子目錄時必須滿足下面兩個條件:

  • 指定的目錄必須存在
  • 指定的必須是目錄。否則容易引發(fā) NullPointerException 異常

6、遞歸遍歷

不說啥了,直接上代碼:

public static void main(String[] args) {File directory = new File("/Users/itwanger/Documents/Github/paicoding");// 遞歸遍歷目錄下的文件和子目錄traverseDirectory(directory);
}public static void traverseDirectory(File directory) {// 列出目錄下的所有文件和子目錄File[] filesAndDirs = directory.listFiles();// 遍歷每個文件和子目錄for (File fileOrDir : filesAndDirs) {if (fileOrDir.isFile()) {// 如果是文件,輸出文件名System.out.println("文件:" + fileOrDir.getName());} else if (fileOrDir.isDirectory()) {// 如果是目錄,遞歸遍歷子目錄System.out.println("目錄:" + fileOrDir.getName());traverseDirectory(fileOrDir);}}
}

三、RandomAccessFile

RandomAccessFile 是 Java 中一個非常特殊的類,它既可以用來讀取文件,也可以用來寫入文件。與其他 IO 類(如 FileInputStream 和 FileOutputStream)不同,RandomAccessFile 允許您跳轉到文件的任何位置,從那里開始讀取或寫入。這使得它特別適用于需要在文件中隨機訪問數(shù)據(jù)的場景,如數(shù)據(jù)庫系統(tǒng)。

下面是一個使用 RandomAccessFile 的示例,包括寫入和讀取文件:

import java.io.IOException;
import java.io.RandomAccessFile;public class RandomAccessFileDemo {public static void main(String[] args) {String filePath = "logs/javabetter/itwanger.txt";try {// 使用 RandomAccessFile 寫入文件writeToFile(filePath, "Hello, 沉默王二!");// 使用 RandomAccessFile 讀取文件String content = readFromFile(filePath);System.out.println("文件內容: " + content);} catch (IOException e) {e.printStackTrace();}}private static void writeToFile(String filePath, String content) throws IOException {try (RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "rw")) {// 將文件指針移動到文件末尾(在此處追加內容)randomAccessFile.seek(randomAccessFile.length());// 寫入內容randomAccessFile.writeUTF(content);}}private static String readFromFile(String filePath) throws IOException {StringBuilder content = new StringBuilder();try (RandomAccessFile randomAccessFile = new RandomAccessFile(filePath, "r")) {// 將文件指針移動到文件開始處(從頭開始讀取)randomAccessFile.seek(0);content.append(randomAccessFile.readUTF());}return content.toString();}
}

為了避免中文亂碼問題,我們使用 RandomAccessFile 的 writeUTF 和 readUTF 方法,它們將使用 UTF-8 編碼處理字符串。大家可以運行一下這段代碼,體驗一下。
在這里插入圖片描述
接下來,會詳細介紹一下 RandomAccessFile 的構造方法和常用的方法。
構造方法
RandomAccessFile 主要有兩個構造方法:

  • RandomAccessFile(File file, String mode):使用給定的文件對象和訪問模式創(chuàng)建一個新的 RandomAccessFile 實例。
  • RandomAccessFile(String name, String mode):使用給定的文件名和訪問模式創(chuàng)建一個新的 RandomAccessFile 實例。

訪問模式 mode 的值可以是:

  • “r”:以只讀模式打開文件。調用結果對象的任何 write 方法都將導致 IOException。
  • “rw”:以讀寫模式打開文件。如果文件不存在,它將被創(chuàng)建。
  • “rws”:以讀寫模式打開文件,并要求對內容或元數(shù)據(jù)的每個更新都被立即寫入到底層存儲設備。這種模式是同步的,可以確保在系統(tǒng)崩潰時不會丟失數(shù)據(jù)。
  • “rwd”:與“rws”類似,以讀寫模式打開文件,但僅要求對文件內容的更新被立即寫入。元數(shù)據(jù)可能會被延遲寫入。

1、主要方法

  • long getFilePointer():返回文件指針的當前位置。
  • long length():返回此文件的長度。
  • int read():從該文件中讀取一個字節(jié)數(shù)據(jù)。
  • int read(byte[] b):從該文件中讀取字節(jié)數(shù)據(jù)并將其存儲到指定的字節(jié)數(shù)組中。
  • int read(byte[] b, int off, int len):從該文件中讀取字節(jié)數(shù)據(jù)并將其存儲到指定的字節(jié)數(shù)組中,從偏移量 off 開始,最多讀取 len 個字節(jié)。
  • String readLine():從該文件中讀取一行文本。
  • readUTF():從文件讀取 UTF-8 編碼的字符串。此方法首先讀取兩個字節(jié)的長度信息,然后根據(jù)這個長度讀取字符串的 UTF-8 字節(jié)。最后,這些字節(jié)被轉換為 Java 字符串。這意味著當你使用 readUTF 方法讀取字符串時,需要確保文件中的字符串是使用 writeUTF 方法寫入的,這樣它們之間的長度信息和編碼方式才能保持一致。
  • void seek(long pos):將文件指針設置到文件中的 pos 位置。
  • void write(byte[] b):將指定的字節(jié)數(shù)組的所有字節(jié)寫入該文件。
  • void write(byte[] b, int off, int len):將指定字節(jié)數(shù)組的部分字節(jié)寫入該文件,從偏移量 off 開始,寫入 len 個字節(jié)。
  • void write(int b):將指定的字節(jié)寫入該文件。
  • writeUTF(String str):將一個字符串以 UTF-8 編碼寫入文件。此方法首先寫入兩個字節(jié)的長度信息,表示字符串的 - - - UTF-8 字節(jié)長度,然后寫入 UTF-8 字節(jié)本身。因此,當你使用 writeUTF 寫入字符串時,實際寫入的字節(jié)數(shù)會比字符串的 UTF-8 字節(jié)長度多兩個字節(jié)。這兩個字節(jié)用于在讀取字符串時確定正確的字符串長度。

再來看一個示例,結合前面的講解,就會徹底掌握 RandomAccessFile。

File file = new File("logs/javabetter/itwanger.txt");try (RandomAccessFile raf = new RandomAccessFile(file, "rw")) {// 寫入文件raf.writeUTF("Hello!");// 將文件指針移動到文件開頭raf.seek(0);// 讀取文件內容String content = raf.readUTF();System.out.println("內容: " + content);} catch (IOException e) {e.printStackTrace();
}

在這個示例中,我們首先創(chuàng)建了一個名為 itwanger.txt 的文件對象。然后我們使用 RandomAccessFile 以讀寫模式打開這個文件。

接下來,我們使用 writeUTF 方法將字符串"Hello, 沉默王二!“寫入文件。然后,我們使用 seek 方法將文件指針移動到文件開頭,并使用 readUTF 方法讀取文件內容。輸出應該是"Hello!”。

最后,我們使用try-with-resources語句確保 RandomAccessFile 在操作完成后被正確關閉。

四、Apache FileUtils 類

FileUtils 類是 Apache Commons IO 庫中的一個類,提供了一些更為方便的方法來操作文件或目錄。

1、復制文件或目錄:

File srcFile = new File("path/to/src/file");
File destFile = new File("path/to/dest/file");
// 復制文件
FileUtils.copyFile(srcFile, destFile);
// 復制目錄
FileUtils.copyDirectory(srcFile, destFile);

2、刪除文件或目錄:

File file = new File("path/to/file");
// 刪除文件或目錄
FileUtils.delete(file);

需要注意的是,如果要刪除一個非空目錄,需要先刪除目錄中的所有文件和子目錄。

3、移動文件或目錄:

File srcFile = new File("path/to/src/file");
File destFile = new File("path/to/dest/file");
// 移動文件或目錄
FileUtils.moveFile(srcFile, destFile);

4、查詢文件或目錄的信息:

File file = new File("path/to/file");
// 獲取文件或目錄的修改時間
Date modifyTime = FileUtils.lastModified(file);
// 獲取文件或目錄的大小
long size = FileUtils.sizeOf(file);
// 獲取文件或目錄的擴展名
String extension = FileUtils.getExtension(file.getName());

五、Hutool FileUtil 類

FileUtil 類是 Hutool 工具包中的文件操作工具類,提供了一系列簡單易用的文件操作方法,可以幫助 Java 開發(fā)者快速完成文件相關的操作任務。

FileUtil 類包含以下幾類操作工具:

  • 文件操作:包括文件目錄的新建、刪除、復制、移動、改名等
  • 文件判斷:判斷文件或目錄是否非空,是否為目錄,是否為文件等等。
  • 絕對路徑:針對 ClassPath 中的文件轉換為絕對路徑文件。
  • 文件名:主文件名,擴展名的獲取
  • 讀操作:包括 getReader、readXXX 操作
  • 寫操作:包括 getWriter、writeXXX 操作
    下面是 FileUtil 類中一些常用的方法:

1、copyFile:復制文件。該方法可以將指定的源文件復制到指定的目標文件中。

File dest = FileUtil.file("FileUtilDemo2.java");

2、move:移動文件或目錄。該方法可以將指定的源文件或目錄移動到指定的目標文件或目錄中。

FileUtil.move(file, dest, true);

3、del:刪除文件或目錄。該方法可以刪除指定的文件或目錄,如果指定的文件或目錄不存在,則會拋出異常。

FileUtil.del(file);

4、rename:重命名文件或目錄。該方法可以將指定的文件或目錄重命名為指定的新名稱。

FileUtil.rename(file, "FileUtilDemo3.java", true);

5、readLines:從文件中讀取每一行數(shù)據(jù)。

FileUtil.readLines(file, "UTF-8").forEach(System.out::println);

相關文章鏈接:
javaIO之各種流的分類與實際應用
javaIO流之文件流
javaIO流之字節(jié)流
javaIO流之字符流
javaIO流之緩沖流
javaIO流之轉換流
javaIO流之序列流

贈人玫瑰,手有余香,如果覺得有用,點個贊吧~~~~~

http://www.risenshineclean.com/news/7507.html

相關文章:

  • 大連網(wǎng)站建設怎么做精準營銷推廣方案
  • 網(wǎng)站平臺建設招標書百度seo優(yōu)化服務項目
  • 廣東省建設執(zhí)業(yè)資格注冊中心官方網(wǎng)站百度新聞頭條
  • 網(wǎng)站免費虛擬主機申請外貿seo優(yōu)化公司
  • 溫州龍灣做網(wǎng)站河北seo推廣
  • 濰坊市建設監(jiān)理協(xié)會網(wǎng)站第三方推廣平臺
  • 怎樣做網(wǎng)站管理怎樣在百度上做廣告
  • 做網(wǎng)站要法人身份證嗎品牌營銷案例分析
  • 網(wǎng)站添加二維碼百度貼吧網(wǎng)頁版登錄
  • 專業(yè)網(wǎng)站建設費用怎么算怎么做一個自己的網(wǎng)站
  • 高端企業(yè)網(wǎng)站建設的核心是什么昆明seo工資
  • 浦城縣規(guī)劃建設旅游局網(wǎng)站中國新聞最新消息
  • 百度做網(wǎng)站的公司推廣學院seo教程
  • 2018做網(wǎng)站的軟件網(wǎng)絡營銷策劃書800字
  • 大同市建設工程招標投標網(wǎng)站b2b電商平臺
  • 酒泉網(wǎng)站建設與制作企業(yè)推廣平臺有哪些
  • 佛山網(wǎng)站優(yōu)化指導百度趨勢搜索
  • 如何做好網(wǎng)站建設亞馬遜seo關鍵詞優(yōu)化軟件
  • 電商運營主要是做什么seo關鍵詞是怎么優(yōu)化的
  • 政府網(wǎng)站建設的總結東莞企業(yè)網(wǎng)站模板建站
  • flash網(wǎng)站項目背景網(wǎng)絡公司主要做哪些
  • 建設網(wǎng)站有哪些術語百度信息流投放
  • 兼職做Ppt代抄論文的網(wǎng)站韶關今日頭條新聞
  • wordpress如何修改html搜索引擎優(yōu)化的主要手段
  • 網(wǎng)站seo源碼網(wǎng)絡營銷師工作內容
  • 華為云自助建站好不好百度一下你就知道啦
  • 怎么做蘋果手機網(wǎng)站首頁網(wǎng)絡運營推廣
  • 河北建設網(wǎng)站企業(yè)鎖在哪下載剛剛地震最新消息今天
  • 洛陽外貿網(wǎng)站推廣網(wǎng)站內部鏈接優(yōu)化方法
  • 濟南建設廳官方網(wǎng)站企業(yè)網(wǎng)絡營銷方案設計