摘要:用兩個(gè)字節(jié)表示。兩個(gè)字節(jié)第一個(gè)字節(jié)是負(fù)數(shù)第二個(gè)字節(jié)可能是正數(shù)目前最常用的中文碼表,萬(wàn)的中文和符號(hào)。用兩個(gè)字節(jié)表示,其中的一部分文字,第一個(gè)字節(jié)開頭是,第二字節(jié)開頭是最新的中文碼表,目前還沒(méi)有正式使用。
01輸入和輸出
* A:輸入和輸出 * a: 參照物 * 到底是輸入還是輸出,都是以Java程序?yàn)閰⒄? * b: Output * 把內(nèi)存中的數(shù)據(jù)存儲(chǔ)到持久化設(shè)備上這個(gè)動(dòng)作稱為輸出(寫)Output操作 * 程序到文件稱為輸出 * c: Input * 把持久設(shè)備上的數(shù)據(jù)讀取到內(nèi)存中的這個(gè)動(dòng)作稱為輸入(讀)Input操作 * 文件到程序稱為輸入 * d: IO操作 * 把上面的這種輸入和輸出動(dòng)作稱為IO操作02字節(jié)輸出流OutputStream
* A: 字節(jié)輸出流OutputStream * a.概念 * IO流用來(lái)處理設(shè)備之間的數(shù)據(jù)傳輸 * Java對(duì)數(shù)據(jù)的操作是通過(guò)流的方式 * Java用于操作流的類都在IO包中 * 流按流向分為兩種:輸入流,輸出流。 * 流按操作類型分為兩種: * 字節(jié)流 : 字節(jié)流可以操作任何數(shù)據(jù),因?yàn)樵谟?jì)算機(jī)中任何數(shù)據(jù)都是以字節(jié)的形式存儲(chǔ)的 * 字符流 : 字符流只能操作純字符數(shù)據(jù),比較方便。 * b.IO流常用父類 * 字節(jié)流的抽象父類: * InputStream * OutputStream * 字符流的抽象父類: * Reader * Writer * c.IO程序書寫 * 使用前,導(dǎo)入IO包中的類 * 使用時(shí),進(jìn)行IO異常處理 * 使用后,釋放資源 * d: 方法介紹 * void close(): 關(guān)閉此輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源。 * void write(byte[] b): 將 b.length 個(gè)字節(jié)從指定的 byte 數(shù)組寫入此輸出流 * void write(byte[] b, int off, int len) :將指定 byte 數(shù)組中從偏移量 off 開始的 len 個(gè)字節(jié)寫入此輸出流。 * abstract void write(int b) : 將指定的字節(jié)寫入此輸出流。03字節(jié)輸出流FileOutputStream寫字節(jié)
* A: 字節(jié)輸出流FileOutputStream寫字節(jié) * a: FileOutputStream * 寫入數(shù)據(jù)文件,學(xué)習(xí)父類方法,使用子類對(duì)象 * b: FileOutputStream構(gòu)造方法 * 作用:綁定輸出的輸出目的 * FileOutputStream(File file) * 創(chuàng)建一個(gè)向指定 File 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流。 * FileOutputStream(File file, boolean append) * 創(chuàng)建一個(gè)向指定 File 對(duì)象表示的文件中寫入數(shù)據(jù)的文件輸出流,以追加的方式寫入。 * FileOutputStream(String name) * 創(chuàng)建一個(gè)向具有指定名稱的文件中寫入數(shù)據(jù)的輸出文件流。 * FileOutputStream(String name, boolean append) * 創(chuàng)建一個(gè)向具有指定 name 的文件中寫入數(shù)據(jù)的輸出文件流,以追加的方式寫入。 * c: 流對(duì)象使用步驟 * 1. 創(chuàng)建流子類的對(duì)象,綁定數(shù)據(jù)目的 * 2. 調(diào)用流對(duì)象的方法write寫 * 3. close釋放資源 * d: 注意事項(xiàng) * 流對(duì)象的構(gòu)造方法,可以創(chuàng)建文件,如果文件存在,直接覆蓋 * e: 案例代碼 /* * FileOutputStream * 寫入數(shù)據(jù)文件,學(xué)習(xí)父類方法,使用子類對(duì)象 * * 子類中的構(gòu)造方法: 作用:綁定輸出的輸出目的 * 參數(shù): * File 封裝文件 * String 字符串的文件名 * * 流對(duì)象使用步驟 * 1. 創(chuàng)建流子類的對(duì)象,綁定數(shù)據(jù)目的 * 2. 調(diào)用流對(duì)象的方法write寫 * 3. close釋放資源 * * 流對(duì)象的構(gòu)造方法,可以創(chuàng)建文件,如果文件存在,直接覆蓋 */ public class FileOutputStreamDemo { public static void main(String[] args)throws IOException { FileOutputStream fos = new FileOutputStream("c:a.txt"); //流對(duì)象的方法write寫數(shù)據(jù) //寫1個(gè)字節(jié) fos.write(97); //關(guān)閉資源 fos.close(); } }04字節(jié)輸出流FileOutputStream寫字節(jié)數(shù)組
* A: 字節(jié)輸出流FileOutputStream寫字節(jié)數(shù)組 * a: 方法介紹 * void write(byte[] b): 將 b.length 個(gè)字節(jié)從指定的 byte 數(shù)組寫入此輸出流 * void write(byte[] b, int off, int len) :將指定 byte 數(shù)組中從偏移量 off 開始的 len 個(gè)字節(jié)寫入此輸出流。 * b: 案例代碼 /* * FileOutputStream * 寫入數(shù)據(jù)文件,學(xué)習(xí)父類方法,使用子類對(duì)象 * * 子類中的構(gòu)造方法: 作用:綁定輸出的輸出目的 * 參數(shù): * File 封裝文件 * String 字符串的文件名 * * 流對(duì)象使用步驟 * 1. 創(chuàng)建流子類的對(duì)象,綁定數(shù)據(jù)目的 * 2. 調(diào)用流對(duì)象的方法write寫 * 3. close釋放資源 * * 流對(duì)象的構(gòu)造方法,可以創(chuàng)建文件,如果文件存在,直接覆蓋 */ public class FileOutputStreamDemo { public static void main(String[] args)throws IOException { FileOutputStream fos = new FileOutputStream("c:a.txt"); //流對(duì)象的方法write寫數(shù)據(jù) //寫字節(jié)數(shù)組 byte[] bytes = {65,66,67,68}; fos.write(bytes); //寫字節(jié)數(shù)組的一部分,開始索引,寫幾個(gè) fos.write(bytes, 1, 2); //寫入字節(jié)數(shù)組的簡(jiǎn)便方式 //寫字符串 fos.write("hello".getBytes()); //關(guān)閉資源 fos.close(); } }05文件的續(xù)寫和換行符號(hào)
* A: 文件的續(xù)寫和換行符號(hào) * a: 文件的續(xù)寫 * FileOutputStream構(gòu)造方法, 的第二個(gè)參數(shù)中,加入true * b: 換行符號(hào) * 在文件中,寫入換行,符號(hào)換行 * 可以寫在上一行的末尾, 也可以寫在下一行的開頭 * c: 案例代碼 /* * FileOutputStream 文件的續(xù)寫和換行問(wèn)題 * 續(xù)寫: FileOutputStream構(gòu)造方法, 的第二個(gè)參數(shù)中,加入true * 在文件中,寫入換行,符號(hào)換行 * 可以寫在上一行的末尾, 也可以寫在下一行的開頭 */ public class FileOutputStreamDemo1 { public static void main(String[] args)throws IOException { File file = new File("c:.txt"); FileOutputStream fos = new FileOutputStream(file,true); fos.write("hello ".getBytes()); fos.write("world".getBytes()); fos.close(); } }06IO中的異常處理
* A: IO中的異常處理 * a:IO流的異常處理 * try catch finally * b: 細(xì)節(jié) * 1. 保證流對(duì)象變量,作用域足夠 * 2. catch里面,怎么處理異常 * 輸出異常的信息,目的看到哪里出現(xiàn)了問(wèn)題 * 停下程序,從新嘗試 * 3. 如果流對(duì)象建立失敗了,需要關(guān)閉資源嗎 * new 對(duì)象的時(shí)候,失敗了,沒(méi)有占用系統(tǒng)資源 * 釋放資源的時(shí)候,對(duì)流對(duì)象判斷null * 變量不是null,對(duì)象建立成功,需要關(guān)閉資源 * c: 案例代碼 public class FileOutputStreamDemo3 { public static void main(String[] args) { //try 外面聲明變量,try 里面建立對(duì)象 FileOutputStream fos = null; try{ fos = new FileOutputStream("s:a.txt"); fos.write(100); }catch(IOException ex){ System.out.println(ex); throw new RuntimeException("文件寫入失敗,重試"); }finally{ try{ if(fos!=null) fos.close(); }catch(IOException ex){ throw new RuntimeException("關(guān)閉資源失敗"); } } } }07字節(jié)輸入流InputStream
* A: 字節(jié)輸入流InputStream * a: 方法介紹 * abstract int read() : * 從輸入流中讀取數(shù)據(jù)的下一個(gè)字節(jié)。 * int read(byte[] b) * 從輸入流中讀取一定數(shù)量的字節(jié),并將其存儲(chǔ)在緩沖區(qū)數(shù)組 b 中。 * int read(byte[] b, int off, int len) * 將輸入流中最多 len 個(gè)數(shù)據(jù)字節(jié)讀入 byte 數(shù)組。 * void close() * 關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 * b: 案例代碼 /* * 字節(jié)輸入流 * java.io.InputStream 所有字節(jié)輸入流的超類 * 作用: 讀取任意文件,每次只讀取1個(gè)字節(jié) * 讀取的方法 read * int read() 讀取1個(gè)字節(jié) * int read(byte[] b) 讀取一定量的字節(jié),存儲(chǔ)到數(shù)組中 */ public class InputStreamDemo { }08字節(jié)輸入流FileInputStream讀取字節(jié)
* A: 字節(jié)輸入流FileInputStream讀取字節(jié) * a: 方法介紹 * abstract int read() : * 從輸入流中讀取數(shù)據(jù)的下一個(gè)字節(jié),返回-1表示文件結(jié)束 * int read(byte[] b) * 從輸入流中讀取一定數(shù)量的字節(jié),并將其存儲(chǔ)在緩沖區(qū)數(shù)組 b 中。 * 讀入緩沖區(qū)的字節(jié)總數(shù),如果因?yàn)橐呀?jīng)到達(dá)文件末尾而沒(méi)有更多的數(shù)據(jù),則返回 -1。 * int read(byte[] b, int off, int len) * 將輸入流中最多 len 個(gè)數(shù)據(jù)字節(jié)讀入 byte 數(shù)組。 * void close() * 關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。 * b: 案例代碼 /* * FileInputStream讀取文件 * * 構(gòu)造方法: 為這個(gè)流對(duì)象綁定數(shù)據(jù)源 * * 參數(shù): * File 類型對(duì)象 * String 對(duì)象 * 輸入流讀取文件的步驟 * 1. 創(chuàng)建字節(jié)輸入流的子類對(duì)象 * 2. 調(diào)用讀取方法read讀取 * 3. 關(guān)閉資源 * * read()方法, * read()執(zhí)行一次,就會(huì)自動(dòng)讀取下一個(gè)字節(jié) * 返回值,返回的是讀取到的字節(jié), 讀取到結(jié)尾返回-1 */ public class FileInputStreamDemo { public static void main(String[] args) throws IOException{ FileInputStream fis = new FileInputStream("c:a.txt"); //讀取一個(gè)字節(jié),調(diào)用方法read 返回int //使用循環(huán)方式,讀取文件, 循環(huán)結(jié)束的條件 read()方法返回-1 int len = 0;//接受read方法的返回值 while( (len = fis.read()) != -1){ System.out.print((char)len); } //關(guān)閉資源 fis.close(); } } /* * int i = fis.read(); System.out.println(i); i = fis.read(); System.out.println(i); i = fis.read(); System.out.println(i); i = fis.read(); System.out.println(i); */09字節(jié)輸入流FileInputStream讀取字節(jié)數(shù)組
* A: 字節(jié)輸入流FileInputStream讀取字節(jié)數(shù)組 * a: 方法介紹 * int read(byte[] b) * 從輸入流中讀取一定數(shù)量的字節(jié),并將其存儲(chǔ)在緩沖區(qū)數(shù)組 b 中。 * 讀入緩沖區(qū)的字節(jié)總數(shù),如果因?yàn)橐呀?jīng)到達(dá)文件末尾而沒(méi)有更多的數(shù)據(jù),則返回 -1。 * int read(byte[] b, int off, int len) * 將輸入流中最多 len 個(gè)數(shù)據(jù)字節(jié)讀入 byte 數(shù)組。 * b: 案例代碼 /* * FileInputStream讀取文件 * 讀取方法 int read(byte[] b) 讀取字節(jié)數(shù)組 * 數(shù)組作用: 緩沖的作用, 提高效率 * read返回的int,表示什么含義 讀取到多少個(gè)有效的字節(jié)數(shù) */ public class FileInputStreamDemo1 { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("c:a.txt"); // 創(chuàng)建字節(jié)數(shù)組 byte[] b = new byte[2]; int len = fis.read(b); System.out.println(new String(b));// ab System.out.println(len);// 2 len = fis.read(b); System.out.println(new String(b));// cd System.out.println(len);// 2 len = fis.read(b); System.out.println(new String(b));// ed System.out.println(len);// 1 len = fis.read(b); System.out.println(new String(b));// ed System.out.println(len);// -1 fis.close(); } }10字節(jié)輸入流FileInputStream讀取字節(jié)數(shù)組的實(shí)現(xiàn)原理
* A:字節(jié)輸入流FileInputStream讀取字節(jié)數(shù)組的實(shí)現(xiàn)原理 * a: 原理 * 參見day23_source文件夾中的"讀取數(shù)組的原理.jpg" * b: 案例代碼 public class FileInputStreamDemo1 { public static void main(String[] args) throws IOException { FileInputStream fis = new FileInputStream("c:a.txt"); //創(chuàng)建字節(jié)數(shù)組 byte[] b = new byte[1024]; int len = 0 ; while( (len = fis.read(b)) !=-1){ System.out.print(new String(b,0,len)); } fis.close(); } }11文件復(fù)制原理
* A: 文件復(fù)制原理 * a: 見day23_source/文件復(fù)制原理.jpg12字節(jié)流復(fù)制文件讀取單個(gè)字節(jié)
* A: 字節(jié)流復(fù)制文件讀取單個(gè)字節(jié) * a: 案例代碼 /* * 將數(shù)據(jù)源 c:a.txt * 復(fù)制到 d:a.txt 數(shù)據(jù)目的 * 字節(jié)輸入流,綁定數(shù)據(jù)源 * 字節(jié)輸出流,綁定數(shù)據(jù)目的 * * 輸入,讀取1個(gè)字節(jié) * 輸出,寫1個(gè)字節(jié) */ public class Copy { public static void main(String[] args) { //定義兩個(gè)流的對(duì)象變量 FileInputStream fis = null; FileOutputStream fos = null; try{ //建立兩個(gè)流的對(duì)象,綁定數(shù)據(jù)源和數(shù)據(jù)目的 fis = new FileInputStream("c: .zip"); fos = new FileOutputStream("d: .zip"); //字節(jié)輸入流,讀取1個(gè)字節(jié),輸出流寫1個(gè)字節(jié) int len = 0 ; while((len = fis.read())!=-1){ fos.write(len); } }catch(IOException ex){ System.out.println(ex); throw new RuntimeException("文件復(fù)制失敗"); }finally{ try{ if(fos!=null) fos.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); }finally{ try{ if(fis!=null) fis.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); } } } } }13字節(jié)流復(fù)制文件讀取字節(jié)數(shù)組
* A: 字節(jié)流復(fù)制文件讀取字節(jié)數(shù)組 * a: 案例代碼 /* * 字節(jié)流復(fù)制文件 * 采用數(shù)組緩沖提高效率 * 字節(jié)數(shù)組 * FileInputStream 讀取字節(jié)數(shù)組 * FileOutputStream 寫字節(jié)數(shù)組 */ public class Copy_1 { public static void main(String[] args) { long s = System.currentTimeMillis(); FileInputStream fis = null; FileOutputStream fos = null; try{ fis = new FileInputStream("c: .zip"); fos = new FileOutputStream("d: .zip"); //定義字節(jié)數(shù)組,緩沖 byte[] bytes = new byte[1024*10]; //讀取數(shù)組,寫入數(shù)組 int len = 0 ; while((len = fis.read(bytes))!=-1){ fos.write(bytes, 0, len); } }catch(IOException ex){ System.out.println(ex); throw new RuntimeException("文件復(fù)制失敗"); }finally{ try{ if(fos!=null) fos.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); }finally{ try{ if(fis!=null) fis.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); } } } long e = System.currentTimeMillis(); System.out.println(e-s); } }14編碼表
* A: 編碼表 * a: 定義: * 生活中字符和計(jì)算機(jī)二進(jìn)制的對(duì)應(yīng)關(guān)系表,就是編碼表 * b: 分類 * 1、ascii: 一個(gè)字節(jié)中的7位就可以表示。對(duì)應(yīng)的字節(jié)都是正數(shù)。0-xxxxxxx * 2、iso-8859-1:拉丁碼表 latin,用了一個(gè)字節(jié)用的8位。1-xxxxxxx 負(fù)數(shù)。 * 3、GB2312:簡(jiǎn)體中文碼表。包含6000-7000中文和符號(hào)。用兩個(gè)字節(jié)表示。兩個(gè)字節(jié)第一個(gè)字節(jié)是負(fù)數(shù),第二個(gè)字節(jié)可能是正數(shù) * GBK:目前最常用的中文碼表,2萬(wàn)的中文和符號(hào)。用兩個(gè)字節(jié)表示,其中的一部分文字,第一個(gè)字節(jié)開頭是1,第二字節(jié)開頭是0 * GB18030:最新的中文碼表,目前還沒(méi)有正式使用。 * 4、unicode:國(guó)際標(biāo)準(zhǔn)碼表:無(wú)論是什么文字,都用兩個(gè)字節(jié)存儲(chǔ)。 * Java中的char類型用的就是這個(gè)碼表。char c = "a";占兩個(gè)字節(jié)。 * Java中的字符串是按照系統(tǒng)默認(rèn)碼表來(lái)解析的。簡(jiǎn)體中文版 字符串默認(rèn)的碼表是GBK。 * 5、UTF-8:基于unicode,一個(gè)字節(jié)就可以存儲(chǔ)數(shù)據(jù),不要用兩個(gè)字節(jié)存儲(chǔ),而且這個(gè)碼表更加的標(biāo)準(zhǔn)化,在每一個(gè)字節(jié)頭加入了編碼信息(后期到api中查找)。 * 6、能識(shí)別中文的碼表:GBK、UTF-8;正因?yàn)樽R(shí)別中文碼表不唯一,涉及到了編碼解碼問(wèn)題。 * 對(duì)于我們開發(fā)而言;常見的編碼 GBK UTF-8 ISO-8859-1 * 文字--->(數(shù)字) :編碼。 “abc”.getBytes() byte[] * (數(shù)字)--->文字 : 解碼。 byte[] b={97,98,99} new String(b)15字符輸出流寫文本FileWriter類
* A: 字符輸出流寫文本FileWriter類 * a: 方法介紹 * void write(int c) * 寫入單個(gè)字符 * void write(String str) * 寫入字符串 * void write(String str, int off, int len) * 寫入字符串的某一部分 * void write(char[] cbuf) * 寫入字符數(shù)組 * abstract void write(char[] cbuf, int off, int len) * 寫入字符數(shù)組的某一部分 * b: 案例代碼 /* * 字符輸出流 * java.io.Writer 所有字符輸出流的超類 * 寫文件,寫文本文件 * * 寫的方法 write * write(int c) 寫1個(gè)字符 * write(char[] c)寫字符數(shù)組 * write(char[] c,int,int)字符數(shù)組一部分,開始索引,寫幾個(gè) * write(String s) 寫入字符串 * * Writer類的子類對(duì)象 FileWriter * * 構(gòu)造方法: 寫入的數(shù)據(jù)目的 * File 類型對(duì)象 * String 文件名 * * 字符輸出流寫數(shù)據(jù)的時(shí)候,必須要運(yùn)行一個(gè)功能,刷新功能 * flush() */ public class WriterDemo { public static void main(String[] args) throws IOException{ FileWriter fw = new FileWriter("c:1.txt"); //寫1個(gè)字符 fw.write(100); fw.flush(); //寫1個(gè)字符數(shù)組 char[] c = {"a","b","c","d","e"}; fw.write(c); fw.flush(); //寫字符數(shù)組一部分 fw.write(c, 2, 2); fw.flush(); //寫如字符串 fw.write("hello"); fw.flush(); fw.close(); } }16字符輸入流讀取文本FileReader類
* A: 字符輸入流讀取文本FileReader類 * a: 方法介紹 * int read() * 讀取單個(gè)字符 * int read(char[] cbuf) * 將字符讀入數(shù)組 * abstract int read(char[] cbuf, int off, int len) * 將字符讀入數(shù)組的某一部分。 * b: 案例代碼 /* * 字符輸入流讀取文本文件,所有字符輸入流的超類 * java.io.Reader * 專門讀取文本文件 * * 讀取的方法 : read() * int read() 讀取1個(gè)字符 * int read(char[] c) 讀取字符數(shù)組 * * Reader類是抽象類,找到子類對(duì)象 FileReader * * 構(gòu)造方法: 綁定數(shù)據(jù)源 * 參數(shù): * File 類型對(duì)象 * String文件名 */ public class ReaderDemo { public static void main(String[] args) throws IOException{ FileReader fr = new FileReader("c:1.txt"); /*int len = 0 ; while((len = fr.read())!=-1){ System.out.print((char)len); }*/ char[] ch = new char[1024]; int len = 0 ; while((len = fr.read(ch))!=-1){ System.out.print(new String(ch,0,len)); } fr.close(); } }17flush方法和close方法區(qū)別
* A: flush方法和close方法區(qū)別 *a: flush()方法 * 用來(lái)刷新緩沖區(qū)的,刷新后可以再次寫出,只有字符流才需要刷新 *b: close()方法 * 用來(lái)關(guān)閉流釋放資源的的,如果是帶緩沖區(qū)的流對(duì)象的close()方法,不但會(huì)關(guān)閉流,還會(huì)再關(guān)閉流之前刷新緩沖區(qū),關(guān)閉后不能再寫出18字符流復(fù)制文本文件
* A: 字符流復(fù)制文本文件 * a: 案例代碼 /* * 字符流復(fù)制文本文件,必須文本文件 * 字符流查詢本機(jī)默認(rèn)的編碼表,簡(jiǎn)體中文GBK * FileReader讀取數(shù)據(jù)源 * FileWriter寫入到數(shù)據(jù)目的 */ public class Copy_2 { public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try{ fr = new FileReader("c:1.txt"); fw = new FileWriter("d:1.txt"); char[] cbuf = new char[1024]; int len = 0 ; while(( len = fr.read(cbuf))!=-1){ fw.write(cbuf, 0, len); fw.flush(); } }catch(IOException ex){ System.out.println(ex); throw new RuntimeException("復(fù)制失敗"); }finally{ try{ if(fw!=null) fw.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); }finally{ try{ if(fr!=null) fr.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); } } } } }19總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67160.html
摘要:字節(jié)流可以處理所有以為單位存儲(chǔ)的文件,也就是說(shuō)可以處理所有的文件,但是在處理字符的速度上不如字符流。文件字節(jié)輸入流的讀取時(shí),是直接同字節(jié)流中讀取的。原理就是在字節(jié)流的基礎(chǔ)上增加了編解碼的操作。 前言 流是干什么的:為了永久性的保存數(shù)據(jù)。 IO流用來(lái)處理設(shè)備之間的數(shù)據(jù)傳輸(上傳和下載文件) java對(duì)數(shù)據(jù)的操作是通過(guò)流的方式。 java用于操作流的對(duì)象都在IO包中。 java IO系統(tǒng)...
摘要:一面試題及剖析今日面試題今天壹哥帶各位復(fù)習(xí)一塊可能會(huì)令初學(xué)者比較頭疼的內(nèi)容,起碼當(dāng)時(shí)讓我很有些頭疼的內(nèi)容,那就是流。在這里壹哥會(huì)從兩部分展開介紹流,即與流。除此之外盡量使用字節(jié)流。關(guān)閉此輸入流并釋放與流相關(guān)聯(lián)的任何系統(tǒng)資源。 一. 面試題及剖析 1. 今日面試題 今天 壹哥 帶各位復(fù)習(xí)一塊可...
摘要:中一個(gè)類型采用編碼,大小占兩個(gè)字節(jié),可以表示一個(gè)中文字符中類型采用字符集,無(wú)法表示一個(gè)中文字符緩沖區(qū)實(shí)現(xiàn)原理字節(jié)流本質(zhì)上是直接與慢速存儲(chǔ)設(shè)備進(jìn)行,速度較慢。從字節(jié)流中恢復(fù)一個(gè)對(duì)象,稱之為對(duì)象反序列化。 字符編碼/Java字符流與字節(jié)流/Buffer原理/對(duì)象序列化 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yzwall 字符編碼與編...
摘要:是一個(gè)系統(tǒng)支持的所有字符的集合,包括各國(guó)家文字標(biāo)點(diǎn)符號(hào)圖形符號(hào)數(shù)字等字符集簡(jiǎn)體中文碼表。支持中國(guó)國(guó)內(nèi)少數(shù)民族的文字,同時(shí)支持繁體漢字以及日韓漢字等字符集為表達(dá)任意語(yǔ)言的任意字符而設(shè)計(jì),是業(yè)界的一種標(biāo)準(zhǔn),也稱為統(tǒng)一碼標(biāo)準(zhǔn)萬(wàn)國(guó)碼。 1 File1.1 File類的概述和構(gòu)造方法File: 它是文件和目錄路徑名的抽象...
摘要:字節(jié)流處理字節(jié)數(shù)據(jù)的流對(duì)象。寫入字符流的抽象類。是字符流通向字節(jié)流的橋梁可使用指定的將要寫入流中的字符編碼成字節(jié)。字節(jié)流是表示字節(jié)輸入流的所有類的超類。轉(zhuǎn)換流的最強(qiáng)功能就是基于字節(jié)流編碼表。刪除此抽象路徑名表示的文件或目錄。 IO流(重點(diǎn)理解)用于處理設(shè)備上數(shù)據(jù)。流:可以理解數(shù)據(jù)的流動(dòng),就是一個(gè)數(shù)據(jù)流。IO流最終要以對(duì)象來(lái)體現(xiàn),對(duì)象都存在IO包中。流也進(jìn)行分類:1:輸入流(讀)和輸出流...
摘要:字符轉(zhuǎn)換流原理字節(jié)流編碼表。和作為子類,僅作為操作字符文件的便捷類存在。源目的先根據(jù)需求明確要讀,還是要寫。屏幕網(wǎng)絡(luò)完全可以明確具體要使用哪個(gè)流對(duì)象。明確四是否需要額外功能呢額外功能轉(zhuǎn)換嗎轉(zhuǎn)換流。高效嗎緩沖區(qū)對(duì)象。 01轉(zhuǎn)換流概述 * A: 轉(zhuǎn)換流概述 * a: 轉(zhuǎn)換流概述 * OutputStreamWriter 是字符流通向字節(jié)流的橋梁:可使用指定的字符編碼...
閱讀 3132·2021-11-15 18:14
閱讀 1785·2021-09-22 10:51
閱讀 3300·2021-09-09 09:34
閱讀 3515·2021-09-06 15:02
閱讀 1034·2021-09-01 11:40
閱讀 3194·2019-08-30 13:58
閱讀 2535·2019-08-30 11:04
閱讀 1089·2019-08-28 18:31