Java字符流和字節(jié)流對文件操作的區(qū)別
記得當(dāng)初自己剛開始學(xué)習(xí)Java的時候,對Java的IO流這一塊特別不明白,所以寫了這篇隨筆希望能對剛開始學(xué)習(xí)Java的人有所幫助,也方便以后自己查詢。Java的IO流分為字符流(Reader,Writer)和字節(jié)流(InputStream,OutputStream),字節(jié)流顧名思義字節(jié)流就是將文件的內(nèi)容讀取到字節(jié)數(shù)組,然后再輸出到另一個文件中。而字符流操作的最小單位則是字符??梢韵瓤匆幌拢桑狭鞯母攀觯?br />

下面首先是通過字符流對文件進(jìn)行讀取和寫入:
package lib;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class Test {
// 定義文件路徑
File f = new File("F:\\test.txt");
//字符流寫入的方法
public String writeInFile() throws IOException{
String str = "";
String count = "";
try {
// 使用字符流對文件進(jìn)行讀取
BufferedReader bf = new BufferedReader(new FileReader(f));
while (true) {
//讀取每一行數(shù)據(jù)并將其賦值給str
if ((count = bf.readLine()) != null) {
str += count;
} else {
break;
}
}
// 關(guān)閉流
bf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return str;
}
//字符流讀取的方法
public void getReader(){
try {
//其中true表示在原本文件內(nèi)容的尾部添加,若不寫則表示清空文件后再添加內(nèi)容
PrintWriter pw=new PrintWriter(new FileWriter(f,true));
pw.write("測試輸入字符串到文件中2");
pw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
Test test=new Test();
//將字符串輸入到文件中
test.getReader();
//讀取相對應(yīng)的字符串
String str=test.writeInFile();
//將文件中內(nèi)容在控制臺輸出
System.out.println("文件內(nèi)容為:"+str);
}
}
上述代碼的關(guān)鍵地方都有注釋,就不再一一贅述了,主要就是在使用完流之后不要忘記關(guān)閉就好
然后是通過字節(jié)流的方式對文件進(jìn)行操作,將一個文件中的內(nèi)容復(fù)制到另一個文件中:
package com.file.test2;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class TestFile2 {
//使用字節(jié)流讀取并寫入文件,將一個文件復(fù)制到另一個文件中
public static void main(String[] args) throws IOException {
//要復(fù)制的源文件
File f=new File("D:\\test.txt");
//目標(biāo)文件
File f2=new File("D:\\test2.txt");
//定義一個byte類型的數(shù)組,用于存儲讀取到的內(nèi)容
byte [] b=new byte[1024];
int length;
try {
//定義讀取的流
FileInputStream in=new FileInputStream(f);
//定義輸出到文件的流
FileOutputStream out=new FileOutputStream(f2);
//將文件內(nèi)容輸出到另一個文件中
while((length=in.read(b))!=-1){
out.write(b, 0, length);
}
out.close();
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
在字節(jié)流的操作中,第13行的源文件必須存在,可以根據(jù)需要自行更改文件路徑,只需要存在即可,否則會報文件找不到的錯誤,同時若想在控制臺輸出讀取到的字節(jié)流的內(nèi)容則可以在第27和28行之間加兩句代碼:in.read(b, 0, b.length);System.out.println(new String(b));
以上就是字符流和字節(jié)流的相關(guān)操作,其實代碼不難,主要是自己的理解,相同的問題每個人都會有不同的理解方式,當(dāng)然,對于我們編程人員來說,除了要多思考之外還要多動手。最后希望以上內(nèi)容能對大家有所幫助,也請繼續(xù)支持本站。
相關(guān)文章
Spring Boot集成mongodb數(shù)據(jù)庫過程解析
這篇文章主要介紹了Spring Boot集成mongodb數(shù)據(jù)庫過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05
java中Iterator和ListIterator實例詳解
這篇文章主要介紹了java中Iterator和ListIterator實例詳解,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12
Java基礎(chǔ)之FileInputStream和FileOutputStream流詳解
這篇文章主要介紹了Java基礎(chǔ)之FileInputStream和FileOutputStream流詳解,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04

