国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java字符流與字節流區別與用法分析

Java字符流與字節流區別與用法分析

2020-05-21 11:14雨竹 JAVA教程

這篇文章主要介紹了Java字符流與字節流區別與用法,較為詳細的分析了java字符流與字節流的概念、功能與使用方法,具有一定參考借鑒價值,需要的朋友可以參考下

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

字節流與字符流主要的區別是他們的的處理方式

流分類:

1.Java的字節流

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

2.Java的字符流

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

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

在實際開發中出現的漢字問題實際上都是在字符流和字節流之間轉化不統一而造成的

在從字節流轉化為字符流時,實際上就是byte[]轉化為String時,

?
1
public String(byte bytes[], String charsetName)

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

如:BufferedInputStream,PipedInputStream等

具體實現

字節流 FileInputStream FileOutputStream
字符流 FileReader FileWriter

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

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

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

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

?
1
2
3
4
5
6
FileInputStream fileInputStream = new FileInputStream("d:/text.txt");
// 定義一個指向D:/TEXT.TXT 的字節流
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
//字節流轉換成InputStreamReader
BufferedReader bufferedReader = new BufferedReader(inputSteamReader);
//InputStreamReader 轉換成帶緩存的bufferedReader

可以把讀出來的內容賦值給字符

?
1
2
3
4
5
6
String ss = new String();
String s;
while((s = bufferedReader.readLine())!=null){
    ss += s;
}
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; }

例如:寫入文件 從字節流輸出到字符流輸出

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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();

例程:

將字符串轉化為字節流 #region  將字符串轉化為字節流

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**/ ///  <summary>
/// 將字符串轉化為字節流
///  </summary>
///  <param name="_Source"> 字串 </param>
///  <returns> 字節流 </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

將字節流轉化為字符串 #region  將字節流轉化為字符串

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**/ ///  <summary>
/// 將字節流轉化為字符串
///  </summary>
///  <param name="bytData"> 字節流 </param>
///  <returns> 字串 </returns>
public  static  string 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程序設計有所幫助。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 手机亚洲第一页 | 中文字幕一区二区三区四区五区 | 谁有毛片网站 | 黄色一级电影在线观看 | 9191国产视频 | 久久中文字幕在线观看 | 久久三区| 日韩欧美一区二区三区免费观看 | 亚洲精品久久久久久一区二区 | 蜜桃成人在线观看 | 国产精品久久久久久久9999 | 亚洲视频区 | 天堂中文视频在线观看 | 国产精品一区二区三区四区五区 | 伦理午夜电影免费观看 | 亚洲精品1| 自拍偷拍亚洲欧美 | 97久久精品午夜一区二区 | 国产精品久久久久久久久免费高清 | 91麻豆精品国产91久久久久久 | www.麻豆av | 国产精品视频导航 | 国产精品爱久久久久久久 | 青青草超碰在线 | www.国产.com| 国产精品久久久久桃色tv | 国产日韩一区 | 香蕉久久久久久 | 亚洲国产精品久久久 | 国产精品中文字幕在线 | 国产精品一区不卡 | 男人天堂网址 | 婷婷免费视频 | 中文字幕 日韩有码 | 欧美视频一二三区 | 精品视频一区二区三区 | 亚洲国产精品久久久久 | 欧美成年黄网站色视频 | 午夜在线观看视频 | 亚洲美女久久 | 亚洲电影在线播放 |