亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java日常開(kāi)發(fā)中讀寫TXT文本舉例詳解

 更新時(shí)間:2024年12月26日 08:32:39   作者:xcLeigh  
這篇文章主要給大家介紹了關(guān)于Java日常開(kāi)發(fā)中讀寫TXT文本,包括使用BufferedReader、Scanner、FileInputStream等類進(jìn)行讀取,以及使用BufferedWriter、PrintWriter、FileOutputStream等類進(jìn)行寫入,需要的朋友可以參考下

前言

在數(shù)字浪潮洶涌澎湃的時(shí)代,程序開(kāi)發(fā)宛如一座神秘而宏偉的魔法城堡,矗立在科技的浩瀚星空中。代碼的字符,似那閃爍的星辰,按照特定的軌跡與節(jié)奏,組合、交織、碰撞,即將開(kāi)啟一場(chǎng)奇妙且充滿無(wú)限可能的創(chuàng)造之旅。當(dāng)空白的文檔界面如同深邃的宇宙等待探索,程序員們則化身無(wú)畏的星辰開(kāi)拓者,指尖在鍵盤上輕舞,準(zhǔn)備用智慧與邏輯編織出足以改變世界運(yùn)行規(guī)則的程序畫卷,在 0 和 1 的二進(jìn)制世界里,鐫刻下屬于人類創(chuàng)新與突破的不朽印記。

一、讀取 TXT 文本

1.1 使用BufferedReader讀取

  • 原理:BufferedReader是 Java 中用于高效讀取字符流的類。它可以從一個(gè)字符輸入流(如FileReader)讀取文本,并提供緩沖功能,減少對(duì)底層資源的頻繁訪問(wèn),提高讀取效率。

步驟示例:

1.首先,需要導(dǎo)入相關(guān)的包java.io.BufferedReader和java.io.FileReader。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

2.然后,使用try - catch塊來(lái)處理可能出現(xiàn)的IOException。在try塊中,創(chuàng)建FileReader對(duì)象來(lái)關(guān)聯(lián)要讀取的文本文件,再將其傳遞給BufferedReader對(duì)象。

public class ReadTxtFile {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new FileReader("example.txt"));
            String line;
            while ((line = reader.readLine())!= null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代碼中,reader.readLine()方法用于逐行讀取文本內(nèi)容,當(dāng)讀取到文件末尾時(shí)返回null。這樣就可以通過(guò)循環(huán)將文件內(nèi)容逐行打印出來(lái)。最后,要記得關(guān)閉BufferedReader,釋放資源。

1.2 使用Scanner讀取

    原理:Scanner類提供了一種簡(jiǎn)單的方式來(lái)解析各種基本數(shù)據(jù)類型和字符串。當(dāng)用于讀取文本文件時(shí),它可以根據(jù)指定的分隔符(默認(rèn)是空格)來(lái)解析文本內(nèi)容。

步驟示例:

導(dǎo)入java.util.Scanner和java.io.File包。

import java.util.Scanner;
import java.io.File;
import java.io.FileNotFoundException;

同樣在try - catch塊中進(jìn)行操作。創(chuàng)建Scanner對(duì)象,將通過(guò)File對(duì)象打開(kāi)的文本文件作為參數(shù)傳遞給它。

public class ReadTxtFileWithScanner {
    public static void main(String[] args) {
        try {
            Scanner scanner = new Scanner(new File("example.txt"));
            while (scanner.hasNextLine()) {
                System.out.println(scanner.nextLine());
            }
            scanner.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

這里scanner.hasNextLine()用于判斷是否還有下一行內(nèi)容,scanner.nextLine()用于讀取下一行內(nèi)容并返回。最后關(guān)閉Scanner對(duì)象。

字節(jié)流讀取(FileInputStream)后轉(zhuǎn)換為字符流(適用于讀取非文本編碼可能有問(wèn)題的情況)

原理:FileInputStream用于以字節(jié)流的方式讀取文件內(nèi)容。如果要將字節(jié)流轉(zhuǎn)換為字符流來(lái)處理文本內(nèi)容,可以將其包裝在InputStreamReader中,再使用BufferedReader進(jìn)行緩沖讀取,這樣可以處理一些特殊編碼的文本文件。

步驟示例:

導(dǎo)入java.io.FileInputStream、java.io.InputStreamReader和java.io.BufferedReader包。

import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

在try - catch塊中,首先創(chuàng)建FileInputStream對(duì)象,然后將其傳遞給InputStreamReader,再傳遞給BufferedReader進(jìn)行讀取。

public class ReadTxtFileWithByteStream {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("example.txt");
            InputStreamReader isr = new InputStreamReader(fis, "UTF - 8");
            BufferedReader reader = new BufferedReader(isr);
            String line;
            while ((line = reader.readLine())!= null) {
                System.out.println(line);
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代碼中,InputStreamReader構(gòu)造函數(shù)中的第二個(gè)參數(shù)指定了文件的編碼方式(這里是UTF - 8),可以根據(jù)實(shí)際情況進(jìn)行修改。

二、寫入 TXT 文本

2.1 使用BufferedWriter寫入

原理:BufferedWriter是用于將文本寫入字符輸出流的類,它提供緩沖功能,減少物理寫入操作的次數(shù),提高寫入效率。

步驟示例:導(dǎo)入java.io.BufferedWriter和java.io.FileWriter包。

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

在try - catch塊中,創(chuàng)建FileWriter對(duì)象來(lái)關(guān)聯(lián)要寫入的文本文件,再將其傳遞給BufferedWriter對(duì)象。使用write方法寫入內(nèi)容,最后通過(guò)flush方法將緩沖區(qū)內(nèi)容寫入文件,并關(guān)閉BufferedWriter。

public class WriteTxtFile {
    public static void main(String[] args) {
        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
            writer.write("這是要寫入文本文件的內(nèi)容");
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.2 使用PrintWriter寫入

原理:PrintWriter提供了方便的打印方法來(lái)寫入各種數(shù)據(jù)類型(如整數(shù)、浮點(diǎn)數(shù)、字符串等)到文本輸出流。它可以自動(dòng)將數(shù)據(jù)轉(zhuǎn)換為字符串并寫入文件。

步驟示例:

導(dǎo)入java.io.PrintWriter和java.io.File包。

import java.io.PrintWriter;
import java.io.File;
import java.io.FileNotFoundException;

在try - catch塊中,創(chuàng)建PrintWriter對(duì)象,將通過(guò)File對(duì)象打開(kāi)的文本文件作為參數(shù)傳遞給它。使用println或print方法寫入內(nèi)容,最后關(guān)閉PrintWriter。

public class WriteTxtFileWithPrintWriter {
    public static void main(String[] args) {
        try {
            PrintWriter writer = new PrintWriter(new File("output.txt"));
            writer.println("這是第一行內(nèi)容");
            writer.print("這是第二行內(nèi)容");
            writer.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

2.3 字節(jié)流寫入(FileOutputStream)后轉(zhuǎn)換為字符流(適用于特殊編碼寫入等情況)

原理:FileOutputStream用于以字節(jié)流的方式將數(shù)據(jù)寫入文件。如果要將字節(jié)流轉(zhuǎn)換為字符流來(lái)寫入文本內(nèi)容,可以將其包裝在OutputStreamReader中,再使用BufferedWriter進(jìn)行緩沖寫入,這種方式在處理特殊編碼文件寫入時(shí)比較有用。

步驟示例:

導(dǎo)入java.io.FileOutputStream、java.io.OutputStreamReader和java.io.BufferedWriter包。

import java.io.FileOutputStream;
import java.io.OutputStreamReader;
import java.io.BufferedWriter;
import java.io.IOException;

在try - catch塊中,首先創(chuàng)建FileOutputStream對(duì)象,然后將其傳遞給OutputStreamReader,再傳遞給BufferedWriter進(jìn)行寫入。

public class WriteTxtFileWithByteStream {
    public static void main(String[] args) {
        try {
            FileOutputStream fos = new FileOutputStream("output.txt");
            OutputStreamReader osw = new OutputStreamReader(fos, "UTF - 8");
            BufferedWriter writer = new BufferedWriter(osw);
            writer.write("這是要寫入的內(nèi)容");
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

同樣,OutputStreamReader構(gòu)造函數(shù)中的第二個(gè)參數(shù)指定了文件的編碼方式。

三、注意事項(xiàng)

3.1 文件路徑問(wèn)題

讀取和寫入文件時(shí),文件路徑是一個(gè)關(guān)鍵因素。相對(duì)路徑是相對(duì)于當(dāng)前工作目錄而言的。在 Java 中,可以通過(guò)System.getProperty(“user.dir”)獲取當(dāng)前工作目錄。如果文件位于項(xiàng)目的特定目錄下,要確保路徑的正確性。

例如,如果example.txt文件位于項(xiàng)目的resources目錄下,在 Eclipse 等 IDE 中,相對(duì)路徑可能需要根據(jù)項(xiàng)目的結(jié)構(gòu)進(jìn)行調(diào)整,可能是src/main/resources/example.txt等。

3.2 編碼問(wèn)題

文本文件有多種編碼方式,如 UTF - 8、GBK 等。在讀取和寫入時(shí),要確保編碼方式的一致性。如果編碼方式不一致,可能會(huì)導(dǎo)致亂碼問(wèn)題。
例如,在讀取一個(gè)使用 UTF - 8 編碼的文件時(shí),應(yīng)該使用InputStreamReader或BufferedReader并指定 UTF - 8 編碼來(lái)正確讀取內(nèi)容。同樣,在寫入文件時(shí),也要根據(jù)需要選擇合適的編碼方式。

3.3 資源釋放問(wèn)題

無(wú)論是讀取還是寫入文件,都要及時(shí)關(guān)閉打開(kāi)的流(如BufferedReader、BufferedWriter等),以釋放系統(tǒng)資源。如果不關(guān)閉流,可能會(huì)導(dǎo)致資源泄漏,特別是在頻繁讀取或?qū)懭胛募那闆r下。

可以使用try - with - resources語(yǔ)句來(lái)自動(dòng)關(guān)閉資源,從 Java 7 開(kāi)始支持這種方式。例如,在讀取文件時(shí):

try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
    String line;
    while ((line = reader.readLine())!= null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

在try - with - resources語(yǔ)句中,當(dāng)代碼塊執(zhí)行結(jié)束后,會(huì)自動(dòng)調(diào)用資源的close方法,這樣可以更加方便和安全地管理資源。

結(jié)束語(yǔ)

親愛(ài)的朋友,無(wú)論前路如何漫長(zhǎng)與崎嶇,都請(qǐng)懷揣夢(mèng)想的火種,因?yàn)樵谏畹膹V袤星空中,總有一顆屬于你的璀璨星辰在熠熠生輝,靜候你抵達(dá)。

愿你在這紛繁世間,能時(shí)常收獲微小而確定的幸福,如春日微風(fēng)輕拂面龐,所有的疲憊與煩惱都能被溫柔以待,內(nèi)心永遠(yuǎn)充盈著安寧與慰藉。

到此這篇關(guān)于Java日常開(kāi)發(fā)中讀寫TXT文本詳解的文章就介紹到這了,更多相關(guān)JAVA讀寫TXT文本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用

    Spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用

    這篇文章主要介紹了spring boot2X Consul如何使用Feign實(shí)現(xiàn)服務(wù)調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • JAVA使用ffmepg處理視頻的方法(壓縮,分片,合并)

    JAVA使用ffmepg處理視頻的方法(壓縮,分片,合并)

    這篇文章主要介紹了JAVA使用ffmepg處理視頻的方法,包括視頻壓縮分片合并功能,通過(guò)實(shí)例代碼講解的很詳細(xì),對(duì)java ffmepg處理視頻相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-05-05
  • Mybatis Plus查詢時(shí)sql字段名大小寫報(bào)錯(cuò)的解決

    Mybatis Plus查詢時(shí)sql字段名大小寫報(bào)錯(cuò)的解決

    這篇文章主要介紹了Mybatis Plus查詢時(shí)sql字段名大小寫報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot集成JPA持久層框架,簡(jiǎn)化數(shù)據(jù)庫(kù)操作

    SpringBoot集成JPA持久層框架,簡(jiǎn)化數(shù)據(jù)庫(kù)操作

    JPA(Java Persistence API)意即Java持久化API,是Sun官方在JDK5.0后提出的Java持久化規(guī)范。主要是為了簡(jiǎn)化持久層開(kāi)發(fā)以及整合ORM技術(shù),結(jié)束Hibernate、TopLink、JDO等ORM框架各自為營(yíng)的局面。JPA是在吸收現(xiàn)有ORM框架的基礎(chǔ)上發(fā)展而來(lái),易于使用,伸縮性強(qiáng)。
    2021-06-06
  • Eclipse設(shè)定文件的默認(rèn)打開(kāi)方式的具體操作步驟

    Eclipse設(shè)定文件的默認(rèn)打開(kāi)方式的具體操作步驟

    以下是對(duì)Eclipse設(shè)定文件的默認(rèn)打開(kāi)方式的具體操作步驟進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • Java 中ThreadLocal類詳解

    Java 中ThreadLocal類詳解

    什么是ThreadLocal?顧名思義它是local variable(線程局部變量)。它的功用非常簡(jiǎn)單,就是為每一個(gè)使用該變量的線程都提供一個(gè)變量值的副本,是每一個(gè)線程都可以獨(dú)立地改變自己的副本,而不會(huì)和其它線程的副本沖突。從線程的角度看,就好像每一個(gè)線程都完全擁有該變量。
    2016-03-03
  • Java程序結(jié)構(gòu)與常量變量難點(diǎn)解析

    Java程序結(jié)構(gòu)與常量變量難點(diǎn)解析

    JAVA的基本結(jié)構(gòu)就是順序結(jié)構(gòu),除非特別指明,否則就按照順序一句一句執(zhí)行順序結(jié)構(gòu)是最簡(jiǎn)單的算法結(jié)構(gòu),語(yǔ)句與語(yǔ)句之間,框與框之間是按從上到下的順序進(jìn)行的,它是由若干個(gè)依次執(zhí)行的處理步驟組成的,它是任何一個(gè)算法都離不開(kāi)的一種基本算法結(jié)構(gòu)
    2021-10-10
  • mybatis-plus用insertBatchSomeColumn方法批量新增指定字段

    mybatis-plus用insertBatchSomeColumn方法批量新增指定字段

    mybatisPlus底層的新增方法是一條一條的新增的,下面這篇文章主要給大家介紹了關(guān)于mybatis-plus用insertBatchSomeColumn方法批量新增指定字段的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • SpringBoot解決BigDecimal傳到前端后精度丟失問(wèn)題

    SpringBoot解決BigDecimal傳到前端后精度丟失問(wèn)題

    這篇文章將通過(guò)示例詳細(xì)為大家介紹SpringBoot如何解決BigDecimal傳到前端后精度丟失問(wèn)題,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-06-06
  • SpringBoot整合Spring Security構(gòu)建安全的Web應(yīng)用

    SpringBoot整合Spring Security構(gòu)建安全的Web應(yīng)用

    pring Security是一個(gè)強(qiáng)大的身份驗(yàn)證和訪問(wèn)控制框架,本文主要介紹了SpringBoot整合Spring Security構(gòu)建安全的Web應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01

最新評(píng)論