最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java字符流與字節(jié)流區(qū)別與用法分析

 更新時(shí)間:2016年06月24日 09:22:29   作者:雨竹  
這篇文章主要介紹了Java字符流與字節(jié)流區(qū)別與用法,較為詳細(xì)的分析了java字符流與字節(jié)流的概念、功能與使用方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Java字符流與字節(jié)流區(qū)別與用法。分享給大家供大家參考,具體如下:

字節(jié)流與字符流主要的區(qū)別是他們的的處理方式

流分類:

1.Java的字節(jié)流

InputStream是所有字節(jié)輸入流的祖先,而OutputStream是所有字節(jié)輸出流的祖先。

2.Java的字符流

Reader是所有讀取字符串輸入流的祖先,而writer是所有輸出字符串的祖先。

InputStream,OutputStream,Reader,writer都是抽象類。所以不能直接new
字節(jié)流是最基本的,所有的InputStream和OutputStream的子類都是,主要用在處理二進(jìn)制數(shù)據(jù),它是按字節(jié)來處理的
但實(shí)際中很多的數(shù)據(jù)是文本,又提出了字符流的概念,它是按虛擬機(jī)的encode來處理,也就是要進(jìn)行字符集的轉(zhuǎn)化
這兩個之間通過 InputStreamReader,OutputStreamWriter來關(guān)聯(lián),實(shí)際上是通過byte[]和String來關(guān)聯(lián)

在實(shí)際開發(fā)中出現(xiàn)的漢字問題實(shí)際上都是在字符流和字節(jié)流之間轉(zhuǎn)化不統(tǒng)一而造成的

在從字節(jié)流轉(zhuǎn)化為字符流時(shí),實(shí)際上就是byte[]轉(zhuǎn)化為String時(shí),

public String(byte bytes[], String charsetName)

有一個關(guān)鍵的參數(shù)字符集編碼,通常我們都省略了,那系統(tǒng)就用操作系統(tǒng)的lang
而在字符流轉(zhuǎn)化為字節(jié)流時(shí),實(shí)際上是String轉(zhuǎn)化為byte[]時(shí),
byte[]    String.getBytes(String charsetName)
也是一樣的道理
至于java.io中還出現(xiàn)了許多其他的流,按主要是為了提高性能和使用方便,

如:BufferedInputStream,PipedInputStream等

具體實(shí)現(xiàn)

字節(jié)流 FileInputStream FileOutputStream
字符流 FileReader FileWriter

字符流處理的單元為2個字節(jié)的Unicode字符,分別操作字符、字符數(shù)組或字符串,而字節(jié)流處理單元為1個字節(jié),操作字節(jié)和字節(jié)數(shù)組。所以字符流是由Java虛擬機(jī)將字節(jié)轉(zhuǎn)化為2個字節(jié)的Unicode字符為單位的字符而成的,所以它對多國語言支持性比較好!如果是音頻文件、圖片、歌曲,就用字節(jié)流好點(diǎn),如果是關(guān)系到中文(文本)的,用字符流好點(diǎn).

所有文件的儲存是都是字節(jié)(byte)的儲存,在磁盤上保留的并不是文件的字符而是先把字符編碼成字節(jié),再儲存這些字節(jié)到磁盤。在讀取文件(特別是文本文件)時(shí),也是一個字節(jié)一個字節(jié)地讀取以形成字節(jié)序列.

字節(jié)流可用于任何類型的對象,包括二進(jìn)制對象,而字符流只能處理字符或者字符串; 2. 字節(jié)流提供了處理任何類型的IO操作的功能,但它不能直接處理Unicode字符,而字符流就可以。

字節(jié)流轉(zhuǎn)換成字符流可以用 InputSteamReader OutputStreamWriter
轉(zhuǎn)換成BufferdReader BufferedWriter 他們具有緩沖區(qū)
例如:讀取文件 從字節(jié)流輸入到字符流輸入
定義一個字節(jié)流:

FileInputStream fileInputStream = new FileInputStream("d:/text.txt");
// 定義一個指向D:/TEXT.TXT 的字節(jié)流
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
//字節(jié)流轉(zhuǎn)換成InputStreamReader
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);
//InputStreamReader 轉(zhuǎn)換成帶緩存的bufferedReader

可以把讀出來的內(nèi)容賦值給字符

String ss = new String();
String s;
while((s = bufferedReader.readLine())!=null){
    ss += s;
}
FileInputStream fileInputStream = new FileInputStream("d:/text.txt"); // 定義一個指向D:/TEXT.TXT 的字節(jié)流   InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);  //字節(jié)流轉(zhuǎn)換成InputStreamReader   BufferedReader bufferedReader = new BufferedReader(inputSteamReader);  //InputStreamReader 轉(zhuǎn)換成帶緩存的bufferedReader  可以把讀出來的內(nèi)容賦值給字符  String ss = new String();  String s;  while((s = bufferedReader.readLine())!=null){ ss += s; }

例如:寫入文件 從字節(jié)流輸出到字符流輸出

FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt");
//定義一個指向D:/TEXT.TXT文件
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write(s);
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();
FileOutputStream fileOutputStream = new FileOutputStream("d:/text.txt");  //定義一個指向D:/TEXT.TXT文件
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write(s);
bufferedWriter.close();
outputStreamWriter.close();
fileOutputStream.close();

例程:

將字符串轉(zhuǎn)化為字節(jié)流 #region  將字符串轉(zhuǎn)化為字節(jié)流

/**/ ///  <summary>
/// 將字符串轉(zhuǎn)化為字節(jié)流
///  </summary>
///  <param name="_Source"> 字串 </param>
///  <returns> 字節(jié)流 </returns>
public  static  byte [] 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

將字節(jié)流轉(zhuǎn)化為字符串 #region  將字節(jié)流轉(zhuǎn)化為字符串

/**/ ///  <summary>
/// 將字節(jié)流轉(zhuǎn)化為字符串
///  </summary>
///  <param name="bytData"> 字節(jié)流 </param>
///  <returns> 字串 </returns>
public  static  string Bytes2String( byte [] bytData)
{
   // 字節(jié)流->字符串
   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程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Java倒計(jì)時(shí)三種實(shí)現(xiàn)方式代碼實(shí)例

    Java倒計(jì)時(shí)三種實(shí)現(xiàn)方式代碼實(shí)例

    這篇文章主要介紹了Java倒計(jì)時(shí)三種實(shí)現(xiàn)方式代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 淺談java 增強(qiáng)型的for循環(huán) for each

    淺談java 增強(qiáng)型的for循環(huán) for each

    下面小編就為大家?guī)硪黄獪\談java 增強(qiáng)型的for循環(huán) for each。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • Java實(shí)現(xiàn)下載文件的6種方式

    Java實(shí)現(xiàn)下載文件的6種方式

    本文主要介紹了Java實(shí)現(xiàn)下載文件的6種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • SpringCloud整合OpenFeign問題

    SpringCloud整合OpenFeign問題

    這篇文章主要介紹了SpringCloud整合OpenFeign問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • nexus私服啟動不了問題及解決

    nexus私服啟動不了問題及解決

    這篇文章主要介紹了nexus私服啟動不了問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • mybatis中的setting配置詳解

    mybatis中的setting配置詳解

    這篇文章主要給大家介紹了關(guān)于mybatis中setting配置的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • java中的stream流中的并行查詢java

    java中的stream流中的并行查詢java

    Stream流是Java 8引入的一種新的數(shù)據(jù)處理方式,它提供了一種高效、簡潔的數(shù)據(jù)處理方式,Stream流可以讓我們以聲明式的方式處理數(shù)據(jù),提高了代碼的可讀性和可維護(hù)性,同時(shí),Stream流支持并行處理,可以充分利用多核CPU的性能,提高程序的運(yùn)行效率
    2024-07-07
  • ssm框架controller層返回json格式數(shù)據(jù)到頁面的實(shí)現(xiàn)

    ssm框架controller層返回json格式數(shù)據(jù)到頁面的實(shí)現(xiàn)

    這篇文章主要介紹了ssm框架controller層返回json格式數(shù)據(jù)到頁面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java Swing JFrame窗口的實(shí)現(xiàn)

    Java Swing JFrame窗口的實(shí)現(xiàn)

    這篇文章主要介紹了Java Swing JFrame窗口的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java使用openssl檢測網(wǎng)站是否支持ocsp

    Java使用openssl檢測網(wǎng)站是否支持ocsp

    OCSP在線證書狀態(tài)協(xié)議是為了替換CRL而提出來的。對于現(xiàn)代web服務(wù)器來說一般都是支持OCSP的,OCSP也是現(xiàn)代web服務(wù)器的標(biāo)配,這篇文章主要介紹了Java使用openssl檢測網(wǎng)站是否支持ocsp,需要的朋友可以參考下
    2022-07-07

最新評論

抚松县| 丹巴县| 宣恩县| 雅安市| 凤翔县| 尼木县| 韶关市| 涡阳县| 芮城县| 高台县| 隆回县| 隆安县| 汉源县| 玉山县| 嘉义市| 吉首市| 沙洋县| 临沂市| 宣城市| 南江县| 海兴县| 石狮市| 安顺市| 迁西县| 桦甸市| 邵东县| 象州县| 军事| 吉安市| 宣威市| 海晏县| 宜黄县| 宜章县| 沛县| 陆丰市| 南汇区| 宿州市| 嵊泗县| 文登市| 区。| 晋州市|