1. 程式人生 > >java 字元流和位元組流的比較

java 字元流和位元組流的比較

IO分兩種流

位元組流 InputStream OutputStream

字元流 Reader Writer

他們都是抽象類

具體實現
位元組流 FileInputStream FileOutputStream
字元流 FileReader FileWriter

字元流處理的單元為2個位元組的Unicode字元,分別操作字元、字元陣列或字串,而位元組流處理單元為1個位元組,操作位元組和位元組陣列。所以字元流是由Java虛擬機器將位元組轉化為2個位元組的Unicode字元為單位的字元而成的,所以它對多國語言支援性比較好!如果是音訊檔案、圖片、歌曲,就用位元組流好點,如果是關係到中文(文字)的,用字元流好點.
所有檔案的儲存是都是位元組(byte)的儲存,在磁碟上保留的並不是檔案的字元而是先把字元編碼成位元組,再儲存這些位元組到磁碟。在讀取檔案(特別是文字檔案)時,也是一個位元組一個位元組地讀取以形成位元組序列.
位元組流可用於任何型別的物件,包括二進位制物件,而字元流只能處理字元或者字串; 2. 位元組流提供了處理任何型別的IO操作的功能,但它不能直接處理Unicode字元,而字元流就可以。

位元組流轉換成字元流可以用 InputSteamReader OutputStreamWriter

轉換成BufferdReader BufferedWriter 他們具有緩衝區

例如:讀取檔案 從位元組流輸入到字元流輸入
定義一個位元組流:

  1. FileInputStream fileInputStream = new FileInputStream("d:/text.txt");
  2. // 定義一個指向D:/TEXT.TXT 的位元組流
  3. InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
  4. //位元組流轉換成InputStreamReader
  5. BufferedReader bufferedReader = new BufferedReader(inputSteamReader);
  6. //InputStreamReader 轉換成帶快取的bufferedReader
  7. 可以把讀出來的內容賦值給字元
  8. String ss = new String();
  9. String s;
  10. while((s = bufferedReader.readLine())!=null){
  11. ss += s;
  12. }

例如:寫入檔案 從位元組流輸出到字元流輸出

Java程式碼複製程式碼
  1. FileOutputStream fileOutputStream = new
    FileOutputStream("d:/text.txt");
  2. //定義一個指向D:/TEXT.TXT檔案
  3. OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
  4. BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
  5. bufferedWriter.write(s);
  6. bufferedWriter.close();
  7. outputStreamWriter.close();
  8. fileOutputStream.close();

#region 將字串轉化為位元組流
///<summary>
/// 將字串轉化為位元組流
///</summary>
///<param name="_Source">字串</param>
///<returns>位元組流</returns>

publicstaticbyte[] String2Bytes(string strSource)
{
System.IO.MemoryStream memoryStream
=new System.IO.MemoryStream();
System.IO.BinaryWriter binaryWriter
=new System.IO.BinaryWriter(memoryStream);
binaryWriter.Write( strSource );
byte[] buffer=memoryStream.GetBuffer();
return buffer;
}

#endregion



#region 將位元組流轉化為字串
///<summary>
/// 將位元組流轉化為字串
///</summary>
///<param name="bytData">位元組流</param>
///<returns>字串</returns>

publicstaticstring Bytes2String(byte[] bytData)
{
//位元組流->字串
System.IO.MemoryStream memoryStream2 =new System.IO.MemoryStream(bytData);
System.IO.BinaryReader binaryReader
=new System.IO.BinaryReader(memoryStream2);
string s2=binaryReader.ReadString();
return s2;
}

#endregion

相關推薦

java 字元位元組比較

IO分兩種流位元組流 InputStream OutputStream字元流 Reader Writer他們都是抽象類具體實現位元組流 FileInputStream FileOutputStream字元流 FileReader FileWriter 字元流處理的單元為2個

JAVA IO——字元位元組的粗淺理解

本人在使用IO流是經常在選擇是output還是input,reader還是writer中糾結一會,歸根結底還是沒有對IO流方向問題擁有自己的理解。 位元組流和字元流,顧名思義,前者和位元組打交道,後者和字元打交道。 位元組流和字元流都分為輸入和輸出兩個方向,

Java 字元位元組-學習筆記

 一:字元流  Reader和Writer(基類)  FileReader和FileWriter(定義字元輸入、輸出流)  BufferedReader和BufferedWriter(字元帶緩衝輸入、輸出流)  LineNumberReader    二:字元流拷貝檔案,4中方式  1.FileReader和

字元位元組的區別 加入了自己的理解

【以下正文】 1 . 之前 ○ 在程式中所有的資料都是以流的方式進行傳輸或儲存的,程式需要資料的時候要使用輸入流讀取資料,而當程式需要將一些資料儲存起來的時候,就要使用輸出流完成。 ○ 程式中的輸入輸出都是以流的形式儲存的,流中儲存的實際上全都是位

分別使用(字元)(位元組)對檔案進行讀寫操作

一.使用(字元流)對檔案進行讀寫操作/* * 使用字元流對檔案進行讀寫操作 */ import java.io.BufferedReader; import java.io.FileInputSt

IO字元位元組的不同使用

源頭: Reader (字元流) 和 InputStream(位元組流) 目標 Writer(字元流)和 OutputStream(位元組流) 裝置 鍵盤 硬碟 控制檯 高效率操作 字元流: BufferedReader BuffereWr

【筆面試】字元位元組的區別以及如何解決亂碼問題

工作中經常遇到java編碼問題,由於缺乏研究,總是無法給出確切的答案,這個週末在網上查了一些資料,在此做些彙總。 問題一:在java中讀取檔案時應該採用什麼編碼? Java讀取檔案的方式總體可以分為兩類:按位元組讀取和按字元讀取。按位元組讀取就是採用InputStre

3.7 Java之列印資料(附字元位元組練習)

列印流 例項 資料流 資料流輸出 資料流輸入 字元位元組流練習 位元組流輸出 字元流輸出

Java:位元組字元(輸入輸出

什麼是流 如果想學習Java工程化、高效能及分散式、深入淺出。微服務、Spring,MyBatis,Netty原始碼分析的朋友可以加我的Java高階交流:854630135,群裡有阿里大牛直播講解技術,以及Java大型網際網路技術的視訊免費分享給大家。 流是個抽象的概念,是對輸入輸出裝置的抽象,輸

位元組字元位元組字元的使用哪個多? java 讀寫操作大檔案 BufferedReaderRandomAccessFile

一 首先我們要知道 在程式中所有的資料都是以流的方式進行傳輸或儲存的   而流有兩種 位元組流用來處理位元組或二進位制物件 字元流主要用來處理字元或字串,一個字元佔兩個位元組 而上一篇的java 讀寫操作大檔案 BufferedReader和RandomAccessFile Buf

Java:IO:探究位元組字元

前言---- 本來不想寫前言了,但是寫完,發現寫得太好了,遇到就好好看一看啊!!!! 注:歡迎轉載,轉載請註明來處 目錄 一. 簡單理解什麼是流? 我是把流理解成一個導管,這個導管連線了硬碟中的某個檔案和程式. 輸入流:輸入資料

Java基礎之IO位元組字元、記憶體、帶快取的、序列化反序列化)

File類:File類提供了對檔案的操作,可以通過字串或URI來構建一個File類物件。通過物件,可以實現檔案的建立(createNewFile)、刪除(delete)、獲得檔名(getName)、獲得父目錄物件(getParentFile)、獲得父目錄名稱(

java字元位元組的區別聯絡

流,用來處理輸入和輸出,主要是和檔案系統打交道,把計算機的處理結果儲存到檔案中,把檔案中的內容讀取到記憶體中,這些都需要流操作來完成。 IO = Input / Output = 輸入 / 輸出                            Java IO 流                    

Java I/O複習(二)—字元字元緩衝、以及位元組的區別

Java I/O流複習(二) 1 字元輸入流 字元流(Java IO的Reader和Writer)功能與InputStream和OutputStream非常類似,InputStream和OutputStream基於位元組處理,而字元流(Reader和Writ

Java位元組字元緩衝對比探究

[TOC] ## 一、前言 所謂IO,也就是Input/Output。Java程式跟外部進行的資料交換就叫做Java的IO操作。程式中資料的輸入輸出,被抽象為流, 按照相對於程式的流向,可分為輸出流和輸入流。 **按照資料流的格式,可分為位元組流和字元流**。Java IO流的體系很龐大,功能豐富。 本

java IO字元位元組簡單使用示例

1.Reader && Writer Reader java.lang.Object |-- java.io.Reader//常用方法 |-- int read() //讀取單個字元 |--

java基礎BufferedReader類(提高字元讀取文字檔案的效率)IO位元組/字元

String nstr=sb.toString().replace("{name}", “ok”).replace("{sex}", “男”).replace("{hobby}", “陶笛”);boolean exists( ) 判斷檔案或目錄是否存在 bool

java第20天----字元緩衝位元組,標準輸入,裝飾設計模式,介面卡設計模式

昨天知識總結 1.流的基礎 2.流的分類 3.字元流 讀 FileReader 寫 FileWriter 4.File 流 字元緩衝流 字元緩衝流:又叫字元緩衝區,為了提高讀寫的能力,本身沒有讀寫的能力,要想進行讀寫,必須依靠字元流來實現。

Java之路:位元組字元

儘管可以使用File進行檔案的操作,但是如果要進行檔案內容的操作,在Java之中就必須通過兩類流操作完成。 Java的流操作分為位元組流和字元流兩種。 字元流處理的物件單元是Unicode字元,每個Unicode字元佔據2個位元組,而位元組流輸入輸出的資料是以單個位元組(Byte

Java——I/O(位元組字元與轉換

位元組流和字元流 位元組流(byte):InputStream、OutputStream  字元流(char):Reader、Writer 位元組流與字元流的區別: 位元組流是原生的操作,而字元流是經過處理後的操作。 一般使用位元組流——無論是網路傳