Java核心技術【二十一】Java的I/O流處理:文件的讀寫操作

Java的I/O流處理:文件讀寫操作

【創作】 不易,【點贊】 是情義,【關注】 是動力,【收藏】 是回憶。
示例代碼地址:https://gitee.com/code-in-java/csdn-blog.git

在Java編程中,輸入/輸出(I/O)流是處理設備輸入輸出的一種機制,它廣泛應用于文件讀寫、網絡通信等領域。對于初學者來說,理解并掌握Java的I/O流處理是非常關鍵的。本文將詳細講解Java的I/O流,特別是文件讀寫操作部分,并通過示例代碼幫助大家理解相關概念、原理及應用場景。

一、Java I/O流概述

Java的I/O流是一組用于讀寫數據的類,它們位于java.io包中。根據處理數據類型的不同,Java的I/O流分為字節流和字符流。

  • 字節流:以字節為單位處理數據,主要用于處理二進制文件,如圖片、音頻、視頻等。字節流的抽象基類為InputStreamOutputStream
  • 字符流:以字符為單位處理數據,主要用于處理文本文件。字符流的抽象基類為ReaderWriter

二、文件讀寫操作

文件讀寫是I/O流應用中最常見的場景之一。Java提供了FileInputStreamFileOutputStreamFileReaderFileWriter等類來實現文件的讀寫操作。

1. 使用字節流寫入文件

import java.io.FileOutputStream;  
import java.io.IOException;  public class FileWriteExample {  public static void main(String[] args) {  String data = "Hello, Java I/O!";  try (FileOutputStream fos = new FileOutputStream("example.txt")) {  fos.write(data.getBytes());  System.out.println("文件寫入成功!");  } catch (IOException e) {  e.printStackTrace();  }  }  
}
  • try (FileOutputStream fos = new FileOutputStream(“example.txt”)) 是一個try-with-resources語句,它自動管理資源。try塊結束時,fos將自動關閉,無需顯式調用fos.close()
  • FileOutputStream fos = new FileOutputStream(“example.txt”) 創建一個FileOutputStream對象fos,用于向文件example.txt寫入數據。如果文件不存在,它將被創建。
  • fos.write(data.getBytes()) 將字符串data轉換為字節數組,并使用fos對象將其寫入文件。
  • catch (IOException e) 捕獲并處理IOException異常,e.printStackTrace() 在控制臺上打印異常堆棧跟蹤,這有助于調試和識別問題。

代碼運行結果:
生成了一個名為 example.txt 的文件
在這里插入圖片描述

2. 使用字節流讀取文件**

import java.io.FileInputStream;  
import java.io.IOException;  public class FileReadExample {  public static void main(String[] args) {  try (FileInputStream fis = new FileInputStream("example.txt")) {  int content;  while ((content = fis.read()) != -1) {  System.out.print((char) content);  }  } catch (IOException e) {  e.printStackTrace();  }  }  
}

使用FileInputStream在Java中進行文件讀取操作,并利用try-with-resources語句自動管理資源。同時,它還展示了如何使用while循環逐個字節地讀取文件內容,并將其打印到控制臺上。

代碼運行結果:
讀取了 example.txt 文件的內容

Hello, Java I/O!

3. 使用字符流寫入文件

import java.io.FileWriter;  
import java.io.IOException;  public class FileWriterExample {  public static void main(String[] args) {  String data = "Hello, Java I/O with FileWriter!";  try (FileWriter writer = new FileWriter("example2.txt")) {  writer.write(data);  System.out.println("文件寫入成功!");  } catch (IOException e) {  e.printStackTrace();  }  }  
}

以上代碼演示了如何使用 FileWriter 在Java中將字符串 “Hello, Java I/O with FileWriter!” 寫入到名為 example2.txt 的文件中,并處理可能發生的IOException異常。

代碼運行結果:
生成了一個名為 example2.txt 的文件
在這里插入圖片描述

4. 使用字符流讀取文件

import java.io.FileReader;  
import java.io.IOException;  public class FileReaderExample {  public static void main(String[] args) {  try (FileReader reader = new FileReader("example2.txt")) {  int content;  while ((content = reader.read()) != -1) {  System.out.print((char) content);  }  } catch (IOException e) {  e.printStackTrace();  }  }  
}

以上代碼演示了如何使用FileReader在Java中逐個字符地讀取名為example2.txt的文件內容,并將其打印到控制臺上,同時處理可能發生的IOException異常。

代碼運行結果:
讀取了example2.txt 的內容

Hello, Java I/O with FileWriter!

三、結束語

Java的I/O流處理是Java編程中的一項重要技術,它提供了豐富的API來支持各種輸入輸出操作。文件讀寫操作是I/O流應用中的基礎,掌握字節流和字符流的使用是進行更復雜I/O操作的前提。希望本文能夠幫助初學者更好地理解Java的I/O流處理,并在實踐中靈活應用。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/44837.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/44837.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/44837.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PyTorch實現BERT預訓練模型轉化指南

huggingface官方的介紹: https://huggingface.co/transformers/converting_tensorflow_models.html 直接用命令行 把箭頭處路徑改為自己放原有tf版本預訓練模型的路徑 回車后會有一大堆提示,然后發現路徑下多了一個bin文件,加上原本的config…

順序結構 ( 六 ) —— 順序結構實例 【互三互三】

🚀歡迎互三👉:程序猿方梓燚 💎💎🚀所屬專欄:C教程💎 🚀關注博主,后期持續更新系列文章 🚀如果有錯誤感謝請大家批評指出,及時修改 &am…

iNavFlight飛控固件學習-1《開發環境搭建》

目錄 文章目錄 目錄摘要1.官網2.形成Linux開發環境工具2.1 簡介2.2 相關工具2.2.1 Ubuntu / Debian系統配置命令2.2.2 Fedora系統配置命令2.2.3 Fedora系統配置命令 2.3 克隆存儲庫2.4 構建工具2.5 使用cmake2.6 構建固件2.7 清除2.8 cmake 緩存維護2.9 編譯通過ninja2.10 更新…

js 日期比較大小

在JavaScript中,比較日期大小通常涉及將日期轉換為時間戳(自1970年1月1日以來的毫秒數),然后比較這些時間戳。這是因為直接比較兩個Date對象可能不會按預期工作,特別是如果你試圖了解哪個日期在另一個日期之前或之后。…

紅酒與未來科技:傳統與創新的碰撞

在歲月的長河中,紅酒以其深邃的色澤、豐富的口感和不同的文化魅力,成為人類文明中的一顆璀璨明珠。而未來科技,則以其迅猛的發展速度和無限的可能性,領著人類走向一個嶄新的時代。當紅酒與未來科技相遇,一場傳統與創新…

2024.07.03校招 實習 內推 面經

綠*泡*泡VX: neituijunsir 交流*裙 ,內推/實習/校招匯總表格 1、提前批 | 中國兵器工業集團第二〇二研究所 | 提前批/招/聘暨/暑期/開放日 提前批 | 中國兵器工業集團第二〇二研究所 | 提前批招聘暨暑期開放日 2、夏令營 | 2024年南網數字集團“未來…

ADI新型充電器解決方案可實現電池堆電壓和充電效率

就目前而言,這可能是生活中zui常見的問題了。世紀之交,電池(尤其是基于鋰離子的電池)成本的降低和性能的提高,推動了電池供電的儲能和便攜式設備的穩步增長。此外,超級電容器由于具有獨特的性質&#xff0c…

oppo25屆秋招,快手25屆技術人才專項計劃內推

oppo25屆秋招,快手25屆技術人才專項計劃內推 ①【OPPO】25屆秋招開啟! 內推簡歷優先篩選! 👉崗位類別:AI/算法類,軟件類,硬件類,工程技術類,品牌策劃類,設計類…

骨傳導耳機最熱門好用款推薦,選購骨傳導耳機前不能忽略的六大細節

如今的社會在耳機種類方面可以說是越來越多,于是很多人在挑選的時候往往選擇不到適合自己的一款耳機,尤其是在近些年來席卷耳機市場的骨傳導耳機,開放耳道的設計在很多時候佩戴無異于是更加的適合,正好小編這邊對于比較熱門的幾款…

社交App iOS審核中的4.3問題:深入分析與解決策略

社交App審核中的4.3問題:深入分析與解決策略 在iOS應用開發和審核過程中,開發者經常會遇到蘋果審核4.3問題。這一問題往往涉及應用的設計和內容重復性,導致應用被拒絕上架。為了幫助開發者更好地理解和解決這一問題,本文將對4.3問…

動漫3d模型設計需要注意什么?---模大獅模型網

設計動漫3D模型時,有幾個方面需要注意: 保持角色風格一致性: 動漫通常有獨特的風格和美學,設計時要確保模型與所代表的角色或作品的整體風格相符。注意保持線條和比例的一致性,使模型能夠忠實地呈現原作的特點。 注重…

springboot餐飲管理系統-計算機畢業設計源碼43667

摘 要 在信息化、數字化的時代背景下,餐飲行業面臨著前所未有的挑戰與機遇。為了提高運營效率、優化顧客體驗,餐飲企業亟需一套高效、穩定且靈活的管理系統來支撐其日常運營。基于Spring Boot的餐飲管理系統應運而生,成為餐飲行業數字化轉型的…

Python基礎教學之一:入門篇——邁入編程世界的第一步

Python基礎教學之一:入門篇——邁入編程世界的第一步 一、Python簡介:歷史與現狀 Python,一種解釋型、高級和通用的編程語言,由Guido van Rossum在1989年圣誕節期間創造,并于1991年首次發布。設計哲學強調代碼的可讀性…

論文降痕降重全攻略:從技巧到工具,助你輕松應對學術挑戰

AIGC降重工具:快速降低論文查重率 高查重率是許多畢業生的困擾。通常,高查重率源于過度引用未經修改的參考資料和格式錯誤。傳統的降重方法,如修改文本和增添原創內容,雖必要但耗時且成效不一。 鑒于此,應用AI工具進…

【企業級監控】源碼部署Zabbix與監控主機

Zabbix企業級分布式監控 文章目錄 Zabbix企業級分布式監控資源列表基礎環境一、LNMP環境搭建(在zbx主機上)1.1、配置Yum倉庫1.1.1、下載阿里云的倉庫文件1.2.2、安裝PHP7的倉庫1.2.3、生成Mariadb10.11的倉庫文件1.2.4、快速重建Yum緩存 1.2、安裝PHP7.4…

請求取消(多種)

XMLHttpRequest XMLHttpRequest 可以使用 abort() 方法來實現請求取消。 const xhr new XMLHttpRequest();xhr.open(GET, http://localhost:3000/api/txt);xhr.timeout 2;xhr.ontimeout function () {xhr.abort();console.error(請求超時,已中斷);};xhr.onload …

shell腳本之for循環

一、循環中的常見語句 1.1 echo 打印 -n :表示不換行輸出-e :輸出轉義字符 \b :相當于退格鍵(backspace)\n :換行,相當于回車\f :換行,換行后的新行的開頭連著上一行的行尾\t :插入…

編程用什么軸體比較好用:全面解析四種軸體的優劣與應用

編程用什么軸體比較好用:全面解析四種軸體的優劣與應用 在編程的世界里,選擇一款合適的機械鍵盤軸體,不僅能提升工作效率,更能帶來舒適的打字體驗。然而,面對市場上琳瑯滿目的軸體類型,究竟該如何選擇呢&a…

a+=1和a=a+1的區別

文章目錄 a1 和a a1的區別一、實例代碼二、代碼解釋三、總結 a1 和a a1的區別 一、實例代碼 public class Test {public static void main(String[] args) {byte a 10; // a a 1; // a (byte) (a 1);a 1;System.out.println(a);} }上面的對變量a進行加一操作時&a…

[Linux安全運維] Nginx相關

Nginx相關 1. 概述 Nginx是一種Web服務器,其具有高并發、高負荷的能力,具有以下優點: 穩定、系統資源消耗少、占用內存較少。軟件安裝包小且定制化強。具有高并發能力,可處理30000-50000個請求。 Nginx作為靜態頁面的web服務器…