Java文件讀寫(xiě)詳解
讀取文件
Java 中可以使用 FileInputStream 和 FileReader 兩個(gè)類(lèi)來(lái)讀取文件:
- FileInputStream 類(lèi):用于讀取二進(jìn)制文件,如圖片、視頻、音頻等文件。
- FileReader 類(lèi):用于讀取字符文件,如文本文件等。
- 使用 FileInputStream 類(lèi)讀取文件
使用 FileInputStream 類(lèi)讀取文件需要進(jìn)行以下步驟:
- 創(chuàng)建一個(gè) FileInputStream 對(duì)象,并指定要讀取的文件路徑。
FileInputStream fis = new FileInputStream("path/to/file");
- 使用 read() 方法讀取文件中的數(shù)據(jù)。
int data = fis.read();
代碼示例:
import java.io.FileInputStream;
import java.io.IOException;
public class FileInputStreamDemo {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("src/main/resources/demo.txt");
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼使用 FileInputStream 讀取了當(dāng)前項(xiàng)目中 resources 目錄下的 demo.txt 文件,并將其中的內(nèi)容輸出到控制臺(tái)上。
需要注意的是,在使用 FileInputStream 讀取文件時(shí),可能會(huì)拋出 IOException 異常,需要進(jìn)行適當(dāng)?shù)奶幚怼M瑫r(shí),在使用完該類(lèi)之后,需要調(diào)用它的 close() 方法來(lái)關(guān)閉文件輸入流。
- 使用 FileReader 類(lèi)讀取文件
使用 FileReader 類(lèi)讀取文件同樣需要進(jìn)行以下步驟:
- 創(chuàng)建一個(gè) FileReader 對(duì)象,并指定要讀取的文件路徑。
FileReader fr = new FileReader("path/to/file");
- 使用 read() 方法讀取文件中的數(shù)據(jù)。
int data = fr.read();
代碼示例:
import java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
public static void main(String[] args) {
try {
FileReader fr = new FileReader("src/main/resources/demo.txt");
int data;
while ((data = fr.read()) != -1) {
System.out.print((char) data);
}
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼使用 FileReader 讀取了當(dāng)前項(xiàng)目中 resources 目錄下的 demo.txt 文件,并將其中的內(nèi)容輸出到控制臺(tái)上。
需要注意的是,與 FileInputStream 類(lèi)似,在使用 FileReader 讀取文件時(shí)也可能會(huì)拋出 IOException 異常,需要進(jìn)行適當(dāng)?shù)奶幚怼M瑫r(shí),在使用完該類(lèi)之后,也需要調(diào)用它的 close() 方法來(lái)關(guān)閉文件輸入流。
寫(xiě)入文件
在 Java 中,可以使用 FileOutputStream 和 FileWriter 兩個(gè)類(lèi)來(lái)寫(xiě)入文件:
- FileOutputStream 類(lèi):用于寫(xiě)入二進(jìn)制文件,如圖片、視頻、音頻等文件。
- FileWriter 類(lèi):用于寫(xiě)入字符文件,如文本文件等。
- 使用 FileOutputStream 類(lèi)寫(xiě)入文件
使用 FileOutputStream 類(lèi)寫(xiě)入文件需要進(jìn)行以下步驟:
- 創(chuàng)建一個(gè) FileOutputStream 對(duì)象,并指定要寫(xiě)入的文件路徑。
FileOutputStream fos = new FileOutputStream("path/to/file");
- 使用 write() 方法將數(shù)據(jù)寫(xiě)入到文件中。
fos.write(data);
代碼示例:
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamDemo {
public static void main(String[] args) {
try {
FileOutputStream fos = new FileOutputStream("src/main/resources/demo.txt");
String data = "Hello, World!";
byte[] bytes = data.getBytes();
fos.write(bytes);
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼使用 FileOutputStream 將字符串 "Hello, World!" 寫(xiě)入到當(dāng)前項(xiàng)目中 resources 目錄下的 demo.txt 文件中。
需要注意的是,在使用 FileOutputStream 寫(xiě)入文件時(shí),可能會(huì)拋出 IOException 異常,需要進(jìn)行適當(dāng)?shù)奶幚?。同時(shí),在使用完該類(lèi)之后,需要調(diào)用它的 close() 方法來(lái)關(guān)閉文件輸出流。
- 使用 FileWriter 類(lèi)寫(xiě)入文件
使用 FileWriter 類(lèi)寫(xiě)入文件同樣需要進(jìn)行以下步驟:
- 創(chuàng)建一個(gè) FileWriter 對(duì)象,并指定要寫(xiě)入的文件路徑。
FileWriter fw = new FileWriter("path/to/file");
- 使用 write() 方法將數(shù)據(jù)寫(xiě)入到文件中。
fw.write(data);
代碼示例:
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterDemo {
public static void main(String[] args) {
try {
FileWriter fw = new FileWriter("src/main/resources/demo.txt");
String data = "Hello, World!";
fw.write(data);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼使用 FileWriter 將字符串 "Hello, World!" 寫(xiě)入到當(dāng)前項(xiàng)目中 resources 目錄下的 demo.txt 文件中。
需要注意的是,與 FileOutputStream 類(lèi)似,在使用 FileWriter 寫(xiě)入文件時(shí)也可能會(huì)拋出 IOException 異常,需要進(jìn)行適當(dāng)?shù)奶幚?。同時(shí),在使用完該類(lèi)之后,也需要調(diào)用它的 close() 方法來(lái)關(guān)閉文件輸出流。
復(fù)制文件
在 Java 中,可以通過(guò) FileInputStream 和 FileOutputStream 來(lái)實(shí)現(xiàn)文件復(fù)制操作。具體步驟如下:
- 創(chuàng)建一個(gè) FileInputStream 對(duì)象,并指定要復(fù)制的源文件路徑。
FileInputStream fis = new FileInputStream("path/to/source/file");
- 創(chuàng)建一個(gè) FileOutputStream 對(duì)象,并指定要寫(xiě)入目標(biāo)文件的路徑。
FileOutputStream fos = new FileOutputStream("path/to/target/file");
- 建立緩沖區(qū),從輸入流中讀取數(shù)據(jù)并寫(xiě)入到輸出流中。
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
- 關(guān)閉 FileInputStream 和 FileOutputStream 流。
fis.close(); fos.close();
代碼示例:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyFileDemo {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("src/main/resources/demo.txt");
FileOutputStream fos = new FileOutputStream("src/main/resources/demo_copy.txt");
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) > 0) {
fos.write(buffer, 0, length);
}
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
上面的代碼實(shí)現(xiàn)了將當(dāng)前項(xiàng)目中 resources 目錄下的 demo.txt 文件復(fù)制到 demo_copy.txt 文件中。
需要注意的是,在使用完相關(guān)流之后,需要調(diào)用它們的 close() 方法來(lái)關(guān)閉流資源,以釋放內(nèi)存。
刪除文件
在 Java 中,可以使用 File 類(lèi)的 delete() 方法來(lái)刪除文件。具體步驟如下:
- 創(chuàng)建一個(gè) File 對(duì)象,并指定要?jiǎng)h除的文件路徑。
File file = new File("path/to/file");
- 調(diào)用 delete() 方法來(lái)刪除文件。
file.delete();
代碼示例:
import java.io.File;
public class DeleteFileDemo {
public static void main(String[] args) {
File file = new File("src/main/resources/demo_copy.txt");
if (file.delete()) {
System.out.println(file.getName() + " is deleted!");
} else {
System.out.println("Delete operation is failed.");
}
}
}
上面的代碼刪除了當(dāng)前項(xiàng)目中 resources 目錄下的 demo_copy.txt 文件。
需要注意的是,在使用 delete() 方法刪除文件時(shí),可能會(huì)拋出 SecurityException 異常,需要進(jìn)行適當(dāng)?shù)奶幚怼M瑫r(shí),在刪除文件之前,需要判斷該文件是否存在,可以使用 File 類(lèi)的 exists() 方法來(lái)實(shí)現(xiàn)。
總結(jié)
本篇文章詳細(xì)介紹了 Java 文件讀寫(xiě)的相關(guān)知識(shí),包括讀取文件、寫(xiě)入文件、復(fù)制文件和刪除文件等操作。希望能夠?qū)Υ蠹业膶W(xué)習(xí)和實(shí)踐有所幫助。需要注意的是,在進(jìn)行文件讀寫(xiě)操作時(shí),要注意異常的處理,以保證代碼的健壯性。同時(shí),在使用完相關(guān)流之后,也需要調(diào)用 close() 方法來(lái)關(guān)閉流資源,以釋放內(nèi)存。
以上就是Java文件讀寫(xiě)詳解的詳細(xì)內(nèi)容,更多關(guān)于Java文件讀寫(xiě)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
JAVA SPI特性及簡(jiǎn)單應(yīng)用代碼實(shí)例
這篇文章主要介紹了JAVA SPI特性及簡(jiǎn)單應(yīng)用代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
java入門(mén)概念個(gè)人理解之package與import淺析
下面小編就為大家?guī)?lái)一篇java入門(mén)概念個(gè)人理解之package與import淺析。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
SpringBoot的@RestControllerAdvice作用詳解
這篇文章主要介紹了SpringBoot的@RestControllerAdvice作用詳解,@RestContrllerAdvice是一種組合注解,由@ControllerAdvice,@ResponseBody組成,本質(zhì)上就是@Component,需要的朋友可以參考下2024-01-01
使用spring aop統(tǒng)一處理異常和打印日志方式
這篇文章主要介紹了使用spring aop統(tǒng)一處理異常和打印日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Spring MVC學(xué)習(xí)教程之RequestMappingHandlerMapping匹配
這篇文章主要給大家介紹了關(guān)于Spring MVC學(xué)習(xí)教程之RequestMappingHandlerMapping匹配的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11
整理Java的MyBatis框架中一些重要的功能及基本使用示例
這篇文章主要介紹了Java的MyBatis框架中一些重要的功能及基本使用示例整理,MyBatis可以幫助Java程序進(jìn)行強(qiáng)大的數(shù)據(jù)庫(kù)操作,需要的朋友可以參考下2016-04-04
Spring Data Neo4j實(shí)現(xiàn)復(fù)雜查詢(xún)的多種方式
在 Spring Data Neo4j 中,實(shí)現(xiàn)復(fù)雜查詢(xún)可以通過(guò)多種方式進(jìn)行,包括使用自定義查詢(xún)、方法命名查詢(xún)以及使用 Cypher 查詢(xún)語(yǔ)言,以下是詳細(xì)介紹,幫助你在 Spring Data Neo4j 中實(shí)現(xiàn)復(fù)雜查詢(xún),需要的朋友可以參考下2024-11-11

