溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

web中字節(jié)流與字符流的區(qū)別有哪些

發(fā)布時間:2021-11-03 10:40:59 來源:億速云 閱讀:157 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關web中字節(jié)流與字符流的區(qū)別有哪些的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

首先看一下什么是流:
在程序中所有的數(shù)據(jù)都是以流的方式進行傳輸或保存的,程序需要數(shù)據(jù)的時候要使用輸入流讀取數(shù)據(jù),而當程序需要將一些數(shù)據(jù)保存起來的時候,就要使用輸出流完成。而程序中的輸入輸出都是以流的形式保存的,流中保存的實際上全都是字節(jié)文件。要把一片二進制數(shù)據(jù)數(shù)據(jù)逐一輸出到某個設備中,或者從某個設備中逐一讀取一片二進制數(shù)據(jù),不管輸入輸出設備是什么,我們要用統(tǒng)一的方式來完成這些操作,用一種抽象的方式進行描述,這個抽象描述方式起名為 IO 流,對應的抽象類為 OutputStream 和InputStream,不同的實現(xiàn)類就代表不同的輸入和輸出設備,它們都是針對字節(jié)進行操作的。

在應用中,經(jīng)常要完全是字符的一段文本輸出去或讀進來,用字節(jié)流可以嗎?計算機中的一切最終都是二進制的字節(jié)形式存在。對于“中國”這些字符,首先要得到其對應的字節(jié),然后將字節(jié)寫入到輸出流。讀取時,首先讀到的是字節(jié),可是我們要把它顯示為字符,我們需要將字節(jié)轉換成字符。由于這樣的需求很廣泛,人家專門提供了字符流的包裝類。底層設備永遠只接受字節(jié)數(shù)據(jù),有時候要寫字符串到底層設備,需要將字符串轉成字節(jié)再進行寫入。字符流是字節(jié)流的包裝,字符流則是直接接受字符串,它內(nèi)部將串轉成字節(jié),再寫入底層設備,這為我們向 IO 設別寫入或讀取字符串提供了一點點方便。***字符向字節(jié)轉換時,要注意編碼的問題,***因為字符串轉成字節(jié)數(shù)組,其實是轉成該字符的某種編碼的字節(jié)形式,讀取也是反之的道理。

講解字節(jié)流與字符流關系的代碼案例:

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.io.PrintWriter;
 
public class IOTest {
 public static void main(String[]args) throws Exception {
 String str = "中國人";
 /*FileOutputStreamfos = newFileOutputStream("1.txt");

 fos.write(str.getBytes("UTF-8"));
 fos.close();*/
 
 /*FileWriter fw =new FileWriter("1.txt");
 fw.write(str);
 fw.close();*/
 PrintWriter pw =new PrintWriter("1.txt","utf-8");
 pw.write(str);
 pw.close();
 
 /*FileReader fr =new FileReader("1.txt");
 char[] buf = newchar[1024];
 int len =fr.read(buf);
 String myStr = newString(buf,0,len);
 System.out.println(myStr);*/
 /*FileInputStreamfr = new FileInputStream("1.txt");
 byte[] buf = newbyte[1024];
 int len =fr.read(buf);
 String myStr = newString(buf,0,len,"UTF-8");
 System.out.println(myStr);*/
 BufferedReader br =new BufferedReader(
 newInputStreamReader(
 newFileInputStream("1.txt"),"UTF-8"
 ) 
 );
 String myStr =br.readLine();
 br.close();
 System.out.println(myStr);
 } 
 
}

感謝各位的閱讀!關于“web中字節(jié)流與字符流的區(qū)別有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

web
AI