Java基礎第十七天 IO流1

2021-06-29 13:59:28 字數 3762 閱讀 6576

io流

讀取資料--輸入流

寫出資料--輸出流

reader

|--inputstreamreader  

|--filereader

|--bufferedreader

writer

|--outputstreamwriter 

|--filewriter

|--bufferedwriter

以下三種情況都需要掌握:(字元流--五種方式,重點掌握最後一種使用緩衝區流功能)

string line = null

while((line = br.readline())!=null)

1)讀操作

2)寫操作

3)讀寫(複製)操作

streamreader

|--filestreamreader  

|--bufferedstreamreader

streamwriter

|--filestreamwriter   

|--bufferedstreamwriter

以下三種情況都需要掌握:

位元組流--四種方式,重點掌握最後一種使用緩衝區流

char chs = new char[5*1024];

int len = 0;

while()(len=br.read(chs))!=-1)

1)讀操作

2)寫操作

3)讀寫(複製)操作 

按照運算元據型別分:

位元組流:     「中」拆成兩個位元組

字元流:1個字元=2個位元組(gbk)編碼     「中」直接來寫,為了方便對文字的操作

如果你看到的檔案通過記事本開啟是能夠讀懂的,那麼就採用字元流;

否則,就採用位元組流,位元組流是可以處理所有型別檔案的

位元組輸入流 讀取資料 inputstream

位元組輸出流 寫出資料 outputstream

字元輸入流 讀取資料 reader

字元輸出流 寫出資料 writer   

注意:四個頂層類都是抽象類

一般每個體系的流都是以基類作為字尾名

1. filewriter  --> 父類 outputstreamwriter  --> 父類 writer

//封裝資料源

//封裝目的地

//把從資料來源讀到的寫到目的地

//釋放資源

3. fileoutputstream

write方法 --因為是乙個位元組 所以不需要緩衝區 無需重新整理

1)void write(int b)

2)void write(byte b)

fos.write("abcde".getbytes());

3)void write(byte b, int off, int len)

4. fileinputstream

方式1:一次讀取乙個位元組   int read()

現象:中文的字是由兩個位元組組成(gbk碼表),一般兩個都是負數

byte b = "中國".getbytes();

system.out.println(arrays.tostring(b));

輸出 -- [-42, -48, -71, -6]

方式2:讀取到byte陣列中 int read(byte b)

5. 緩衝區流

bufferedwriter

bufferedreader

bufferedoutputstream

bufferedinputstream

bufferedwriter

構造方法:bufferedwriter(writer out)

write方法:同filewrite類的write方法

bufferedwriter bw = new bufferedwriter(new filewriter("bw.txt"));

bw.write("helloworld");

bw.close();

6. 字元緩衝區流的特殊功能 --  可以讀一行,而且返回的是string型別

1)bufferedwriter -- public void newline() 會根據系統來決定寫入的換行符(跨系統)

習慣是newline()之後flush()一下

2)bufferedreader -- public string readline() 一次讀取一行資料

只包含內容,不包含換行符

案例:使用新功能複製文字檔案

string line = null

while((line = br.readline())!=null)

7. system.in 標準的輸入流

如scanner類下的  scanner sc = new scanner(system.in)

int i = sc.nextint();

字段資訊:

public static final inputstream in

inputstream is = system.in;  system.in -->bufferinputstream型別

8. inputstreamreader 是位元組流通向字元流的橋梁

構造方法:inputstreamreader(inputstream in)

bufferedreader br = new bufferedreader(new inputstreamreader(system.in));

案例--讀取鍵盤錄入到文字檔案

9. system.out 標準的輸出流 --printstream類 --> 父類是outputstream類 

字段資訊:

public static final printstream out

10. outputstreamwriter 是位元組流通向字元流的橋梁

構造方法:outputstreamwriter(outputstream out)

bufferedwriter bw = new bufferedwriter(new outputstreamwriter(system.out));

string line = null;

while((line=br.readline())!=null)

11. 編碼表 -- 由字元及其對應的陣列組成的一張表

常見的編碼表

ascii碼表   --  0到127   7byte --> char

iso-8859-1 碼表 --  拉丁碼表 1byte=8byte --> char

gb2312碼表  --

gbk碼表   --  簡體中文碼表 2byte --> char

gb18030碼表

big5碼表  -- 台灣(正體中文)

unicode編碼  --

utf-8  -- 按照資料的區域來決定儲存的位元組數  3byte --> char

於是 utf-8的兩個漢字 對應 gbk碼表的 三個漢字

12. 在io流中,如果想指定編碼讀寫資料,只能使用轉換流

outputstreamwriter 可以將要寫入流中的字元編碼成位元組,它使用的字符集可以由名稱制定

或顯示給定,否則將接受平台預設的字符集

構造方法:outputstreamwriter(outputstream out, string charsename)

字元流    = 位元組流  +  編碼表

inputstreamreader

構造方法:inputstreamreader(inputstream in, charsename)

打卡第十七天

第二次了,又沒過.有時候會有一種失敗感,這幾年好像什麼都沒做好,過的好像也不是很開心。昨天兵查過成績後心情就低落起來了,尤其是聽到晨晨得知她沒過時發出的驚訝聲音 你竟然沒過?時,心情立馬跌到了谷底,回到宿舍就再也繃不住了,大哭了一場,媽媽打 詢問情況,看到女兒哭的傷心,竟也無措起來,不知如何安慰。於...

失業第十七天

失業過了十七天,今天進行了第三場面試,說來也巧有好幾個同學在面試的公司,哈哈哈 找個角落了解下內幕 每個公司都有各自的風格,每個面試官也有各自的特點,才面了三家公司就感受到了完全不同的形式,只有hr面試的內容基本相似,簡單說說吧 第一家 技術面試筆試 上機面試內容就聊聊題目,接著聊聊學校生活,在聊的...

寒假第十七天

python連線資料庫 今天學習了一下python如何連線資料庫以及增刪改查 首先我用的是pymysql,是python連線mysql的乙個庫 首先先得安裝pymysql 命令pip install pymysql 具體 import pymysql 引用pymysql模組 開啟資料庫連線db py...