java 字元流和位元組流的比較
IO分兩種流
位元組流 InputStream OutputStream
字元流 Reader Writer
他們都是抽象類
具體實現
位元組流 FileInputStream FileOutputStream
字元流 FileReader FileWriter
字元流處理的單元為2個位元組的Unicode字元,分別操作字元、字元陣列或字串,而位元組流處理單元為1個位元組,操作位元組和位元組陣列。所以字元流是由Java虛擬機器將位元組轉化為2個位元組的Unicode字元為單位的字元而成的,所以它對多國語言支援性比較好!如果是音訊檔案、圖片、歌曲,就用位元組流好點,如果是關係到中文(文字)的,用字元流好點.
所有檔案的儲存是都是位元組(byte)的儲存,在磁碟上保留的並不是檔案的字元而是先把字元編碼成位元組,再儲存這些位元組到磁碟。在讀取檔案(特別是文字檔案)時,也是一個位元組一個位元組地讀取以形成位元組序列.
位元組流可用於任何型別的物件,包括二進位制物件,而字元流只能處理字元或者字串; 2. 位元組流提供了處理任何型別的IO操作的功能,但它不能直接處理Unicode字元,而字元流就可以。
位元組流轉換成字元流可以用 InputSteamReader OutputStreamWriter
轉換成BufferdReader BufferedWriter 他們具有緩衝區
例如:讀取檔案 從位元組流輸入到字元流輸入
定義一個位元組流:
- FileInputStream fileInputStream = new FileInputStream("d:/text.txt");
- // 定義一個指向D:/TEXT.TXT 的位元組流
- InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
- //位元組流轉換成InputStreamReader
- BufferedReader bufferedReader = new BufferedReader(inputSteamReader);
- //InputStreamReader 轉換成帶快取的bufferedReader
- 可以把讀出來的內容賦值給字元
- String ss = new String();
- String s;
- while((s = bufferedReader.readLine())!=null){
- ss += s;
- }
例如:寫入檔案 從位元組流輸出到字元流輸出
Java程式碼- FileOutputStream fileOutputStream = new
- //定義一個指向D:/TEXT.TXT檔案
- OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
- BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
- bufferedWriter.write(s);
- bufferedWriter.close();
- outputStreamWriter.close();
- 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 讀寫操作大檔案 BufferedReader和RandomAccessFile
一 首先我們要知道 在程式中所有的資料都是以流的方式進行傳輸或儲存的 而流有兩種 位元組流用來處理位元組或二進位制物件 字元流主要用來處理字元或字串,一個字元佔兩個位元組 而上一篇的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 位元組流與字元流的區別: 位元組流是原生的操作,而字元流是經過處理後的操作。 一般使用位元組流——無論是網路傳