Java字元流和位元組流對檔案操作的區別

Java字元流和位元組流對檔案操作的區別

記得當初自己剛開始學習Java的時候,對Java的IO流這一塊特別不明白,所以寫了這篇隨筆希望能對剛開始學習Java的人有所幫助,也方便以後自己查詢。Java的IO流分為字元流(Reader,Writer)和位元組流(InputStream,OutputStream),位元組流顧名思義位元組流就是將檔案的內容讀取到位元組陣列,然後再輸出到另一個檔案中。而字元流操作的最小單位則是字元。可以先看一下IO流的概述:

 

下面首先是通過字元流對檔案進行讀取和寫入:


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 {
// 使用字元流對檔案進行讀取
BufferedReader bf = new BufferedReader(new FileReader(f));
while (true) {
//讀取每一行資料並將其賦值給str
if ((count = bf.readLine()) != null) {
str  = count;
} else {
break;
}
}
// 關閉流
bf.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return str;
}
//字元流讀取的方法
public void getReader(){
try {
//其中true表示在原本檔案內容的尾部新增,若不寫則表示清空檔案後再新增內容
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();
//讀取相對應的字串
String str=test.writeInFile();
//將檔案中內容在控制檯輸出
System.out.println("檔案內容為:" str);
}
}

上述程式碼的關鍵地方都有註釋,就不再一一贅述了,主要就是在使用完流之後不要忘記關閉就好

然後是通過位元組流的方式對檔案進行操作,將一個檔案中的內容複製到另一個檔案中:


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 {
//使用位元組流讀取並寫入檔案,將一個檔案複製到另一個檔案中
public static void main(String[] args) throws IOException {
//要複製的原始檔
File f=new File("D:\\test.txt");
//目標檔案
File f2=new File("D:\\test2.txt");
//定義一個byte型別的陣列,用於儲存讀取到的內容
byte [] b=new byte[1024];
int length;
try {
//定義讀取的流
FileInputStream in=new FileInputStream(f);
//定義輸出到檔案的流
FileOutputStream out=new FileOutputStream(f2);
//將檔案內容輸出到另一個檔案中
while((length=in.read(b))!=-1){
out.write(b, 0, length);
}
out.close();
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}

在位元組流的操作中,第13行的原始檔必須存在,可以根據需要自行更改檔案路徑,只需要存在即可,否則會報檔案找不到的錯誤,同時若想在控制檯輸出讀取到的位元組流的內容則可以在第27和28行之間加兩句程式碼:in.read(b, 0, b.length);System.out.println(new String(b));

以上就是字元流和位元組流的相關操作,其實程式碼不難,主要是自己的理解,相同的問題每個人都會有不同的理解方式,當然,對於我們程式設計人員來說,除了要多思考之外還要多動手。最後希望以上內容能對大家有所幫助,也請繼續支援本站。

您可能感興趣的文章:

Java檔案(io)程式設計之檔案字元流使用方法詳解Java 中IO流字元流詳解及例項詳解Java中字元流與位元組流的區別java程式設計中位元組流轉換成字元流的實現方法Java字元流與位元組流區別與用法分析詳解Java中字元流與位元組流的區別Java程式設計中位元組流與字元流IO操作示例java字元流緩衝區詳解