java中的FileReader和FileWriter讀寫流
FileReader和FileWriter讀寫流
在java中對數(shù)據(jù)輸入輸出的操作陳作為流 我們對不同的文件進(jìn)行操作,或者對操作文件進(jìn)行輸入和輸出時所用的流都是不同的。
因此在java.io的包下存在很多流的類或者接口提供給我們對應(yīng)的操作
流的原理:
- 輸入流(input):將外部的文件通過流讀取到內(nèi)存中
- 輸出流(output):將內(nèi)存中的文件通過流輸出到硬盤等儲存設(shè)備中
分類:
- 按照操作單位分為;字節(jié)流,字符流
- 按照流向不同分為;輸入流,輸出流
- 按照角色不同分為;節(jié)點流,處理流
io流體系:
- FileReader與FileWriter
- FileReader是針對字符型文件(后綴.txt)的流,根據(jù)定義的不同也可以稱其為字符流,節(jié)點流,輸入流
- FileWriter是針對是針對字符型文件(后綴.txt)的流,根據(jù)定義的不同也可以稱其為字符流,節(jié)點流,輸出流
FileReader的使用
1,實例化一個File類用與操作的對象
2,實例化一個FileReader類并且將file對象作為參數(shù)傳入它的構(gòu)造器中。
3,用FileReader的方法將數(shù)據(jù)讀入 FileReader讀入數(shù)據(jù)的方法是read()方法 —>read()的空參構(gòu)造器:返回讀入的一個字符并繼續(xù)往下讀如果讀到最后一個元素返回-1 —>read(char cbuf[])一次讀入cbuf中字符個元素的個數(shù)如果到達(dá)文件末尾返回-1
4,關(guān)閉流 close();方法流不會自動關(guān)閉,必須手動關(guān)閉,不然會浪費資源
public class FileReaderAndFileWriter { public static void main(String[] args) { FileReader flr = null; try { File file = new File("hello.txt"); flr = new FileReader(file); char[] cbuf = new char[2]; int read = flr.read(cbuf); while (read != -1){ for (int i = 0 ; i < read ; i++){ System.out.print(cbuf[i]); } read = flr.read(cbuf); } } catch (IOException e) { e.printStackTrace(); } finally { if(flr != null){//防止空指針 try { flr.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
注:整個過程中文件會報錯,而我們需要使用try-catch-finally來解決該異常,如果使用throws的話中途拋出異常之后不會去執(zhí)行最后的close();方法 則該流不會關(guān)閉會浪費資源
FileWriter的使用:FileWriter其實使用步驟和FileReader是一樣的
1,實例化一個File類
2,實例化一個FileWriter類并且將File的實例作為參數(shù)傳入FileWriter的構(gòu)造器中 —> new FileWriter(file,flase);默認(rèn)情況是flase; 修改原有文件的內(nèi)容改為添加的數(shù)據(jù) —>new FileWriter(file,true); 在原有文件的基礎(chǔ)上添加寫入的數(shù)據(jù)
3,使用write方法寫入數(shù)據(jù)到指定文件夾中 如果實例化的File類的file文件不存在會自動添加 public void write(char cbuf[]) :一次寫入cbuf指定個數(shù)的數(shù)據(jù) public void write(char cbuf[], int off, int len):在傳入的cbuf數(shù)組中從off開始寫入,一次寫入len個數(shù)據(jù)
4,關(guān)閉FileWriter流:colse();方法
例’
public class FileReaderAndFileWriter { public static void main(String[] args) { FileWriter flw = null; try { //寫入的文件的文件夾名字 File file = new File("hw.txt"); flw = new FileWriter(file); //寫入的內(nèi)容 flw.write("hello JAVA"); } catch (IOException e) { e.printStackTrace(); } finally { try { flw.close(); } catch (IOException e) { e.printStackTrace(); } } } }
利用FileReader和FileWriter實現(xiàn)對文本文件的復(fù)制
public class FileReaderAndFileWriter { public static void main(String[] args){ FileReader flr = null; FileWriter flw = null; try { //file是需要復(fù)制的文件,file1是要復(fù)制到的地方 File file = new File("hello.txt"); File file1 = new File("hw.txt"); flr = new FileReader(file); flw = new FileWriter(file1); char[] cbuf = new char[5]; int read = flr.read(cbuf); while (read != -1){ // for(int i = 0; i < cbuf.length; i++){ // flw.write(cbuf, 0 , read); // } //如果要用write方法直接寫入的話需要使用下面三個參數(shù)的方法 //否則會打印重復(fù)flw.write(cbuf);hello worldworl flw.write(cbuf, 0 , read); read = flr.read(cbuf); } } catch (IOException e) { e.printStackTrace(); } finally { if(flr != null){ try { flr.close(); } catch (IOException e) { e.printStackTrace(); } } if(flw != null){ try { flw.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
到此這篇關(guān)于java中的FileReader和FileWriter讀寫流的文章就介紹到這了,更多相關(guān)FileReader和FileWriter讀寫流內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
springboot 防止重復(fù)請求防止重復(fù)點擊的操作
這篇文章主要介紹了springboot 防止重復(fù)請求防止重復(fù)點擊的操作,URL 攔截器可以使用 spring 攔截器,但使用 spring,每個需要過濾的新 URL 都需要添加配置,因此這里使用 AOP 注解 的形式來實現(xiàn),結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01springboot+springmvc+mybatis項目整合
這篇文章主要為大家詳細(xì)介紹了springboot+springmvc+mybatis項目的整合,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04servlet之ServletContext簡介_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了servlet之ServletContext簡介,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07Java如何接收并解析HL7協(xié)議數(shù)據(jù)
文章主要介紹了HL7協(xié)議及其在醫(yī)療行業(yè)中的應(yīng)用,詳細(xì)描述了如何配置環(huán)境、接收和解析數(shù)據(jù),以及與前端進(jìn)行交互的實現(xiàn)方法,文章還分享了使用7Edit工具進(jìn)行調(diào)試的經(jīng)驗,并記錄了一個常見的解析問題及其解決方法2024-12-12解決Springboot項目中很多頁面出現(xiàn)Whitelabel Error Page(404)的問題
最近在接手的前后端項目中發(fā)現(xiàn)其默認(rèn)路徑不是主機(jī)+端口(如:http://localhost:3453/)的形式,很多頁面的訪問是加了一個層級,只要訪問頁面就會出現(xiàn)Whitelabel Error Page(404),所以本文給大家提供了解決方案,需要的朋友可以參考下2024-02-02mybatis plus in使用時傳數(shù)組、集合的注意點說明
這篇文章主要介紹了mybatis plus in使用時傳數(shù)組、集合的注意點說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11深入探究SpringBoot攔截器的自定義設(shè)計與實現(xiàn)全攻略
攔截器是Spring框架提供的核心功能之?,主要用來攔截用戶的請求,在指定方法前后,根據(jù)業(yè)務(wù)需要執(zhí)行預(yù)先設(shè)定的代碼,本文將給大家和大家一起深入探究SpringBoot攔截器的自定義設(shè)計與實現(xiàn),需要的朋友可以參考下2024-05-05spring.factories文件的解析源碼API機(jī)制詳解
通過本文深入探討Spring?Boot的背景歷史、業(yè)務(wù)場景、功能點以及底層原理,使讀者對Spring?Boot有了更深入的了解,結(jié)合實例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-11-11Java多線程之volatile關(guān)鍵字及內(nèi)存屏障實例解析
volatile是JVM提供的一種最輕量級的同步機(jī)制,因為Java內(nèi)存模型為volatile定義特殊的訪問規(guī)則,使其可以實現(xiàn)Java內(nèi)存模型中的兩大特性:可見性和有序性。這篇文章主要介紹了Java多線程之volatile關(guān)鍵字及內(nèi)存屏障,需要的朋友可以參考下2019-05-05