java中的FileReader和FileWriter讀寫流
FileReader和FileWriter讀寫流
在java中對(duì)數(shù)據(jù)輸入輸出的操作陳作為流 我們對(duì)不同的文件進(jìn)行操作,或者對(duì)操作文件進(jìn)行輸入和輸出時(shí)所用的流都是不同的。
因此在java.io的包下存在很多流的類或者接口提供給我們對(duì)應(yīng)的操作
流的原理:
- 輸入流(input):將外部的文件通過流讀取到內(nèi)存中
- 輸出流(output):將內(nèi)存中的文件通過流輸出到硬盤等儲(chǔ)存設(shè)備中
分類:
- 按照操作單位分為;字節(jié)流,字符流
- 按照流向不同分為;輸入流,輸出流
- 按照角色不同分為;節(jié)點(diǎn)流,處理流
io流體系:
- FileReader與FileWriter
- FileReader是針對(duì)字符型文件(后綴.txt)的流,根據(jù)定義的不同也可以稱其為字符流,節(jié)點(diǎn)流,輸入流
- FileWriter是針對(duì)是針對(duì)字符型文件(后綴.txt)的流,根據(jù)定義的不同也可以稱其為字符流,節(jié)點(diǎn)流,輸出流
FileReader的使用
1,實(shí)例化一個(gè)File類用與操作的對(duì)象
2,實(shí)例化一個(gè)FileReader類并且將file對(duì)象作為參數(shù)傳入它的構(gòu)造器中。
3,用FileReader的方法將數(shù)據(jù)讀入 FileReader讀入數(shù)據(jù)的方法是read()方法 —>read()的空參構(gòu)造器:返回讀入的一個(gè)字符并繼續(xù)往下讀如果讀到最后一個(gè)元素返回-1 —>read(char cbuf[])一次讀入cbuf中字符個(gè)元素的個(gè)數(shù)如果到達(dá)文件末尾返回-1
4,關(guān)閉流 close();方法流不會(huì)自動(dòng)關(guān)閉,必須手動(dòng)關(guān)閉,不然會(huì)浪費(fèi)資源
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();
}
}
}
}
}
注:整個(gè)過程中文件會(huì)報(bào)錯(cuò),而我們需要使用try-catch-finally來解決該異常,如果使用throws的話中途拋出異常之后不會(huì)去執(zhí)行最后的close();方法 則該流不會(huì)關(guān)閉會(huì)浪費(fèi)資源
FileWriter的使用:FileWriter其實(shí)使用步驟和FileReader是一樣的
1,實(shí)例化一個(gè)File類
2,實(shí)例化一個(gè)FileWriter類并且將File的實(shí)例作為參數(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ù)到指定文件夾中 如果實(shí)例化的File類的file文件不存在會(huì)自動(dòng)添加 public void write(char cbuf[]) :一次寫入cbuf指定個(gè)數(shù)的數(shù)據(jù) public void write(char cbuf[], int off, int len):在傳入的cbuf數(shù)組中從off開始寫入,一次寫入len個(gè)數(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實(shí)現(xiàn)對(duì)文本文件的復(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方法直接寫入的話需要使用下面三個(gè)參數(shù)的方法
//否則會(huì)打印重復(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring ApplicationContext接口功能詳細(xì)介紹
ApplicationContext是Spring應(yīng)用程序中的中央接口,由于繼承了多個(gè)組件,使得ApplicationContext擁有了許多Spring的核心功能,如獲取bean組件,注冊(cè)監(jiān)聽事件,加載資源文件等2023-02-02
SpringCloud連接不上遠(yuǎn)程N(yùn)acos問題排查
本文主要介紹了SpringCloud連接不上遠(yuǎn)程N(yùn)acos問題排查,可能是因?yàn)槲撮_放端口,或集群內(nèi)部通信異常等,下面就來介紹一下問題解決,感興趣的可以了解一下2024-06-06
解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題
這篇文章主要介紹了解決SpringBoot內(nèi)嵌Tomcat并發(fā)容量的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
SpringBoot集成ip2region實(shí)現(xiàn)ip白名單的代碼示例
ip2region v2.0 - 是一個(gè)離線IP地址定位庫和IP定位數(shù)據(jù)管理框架,10微秒級(jí)別的查詢效率,提供了眾多主流編程語言的 xdb 數(shù)據(jù)生成和查詢客戶端實(shí)現(xiàn),本文介紹了SpringBoot集成ip2region實(shí)現(xiàn)ip白名單的代碼工程,需要的朋友可以參考下2024-08-08

