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...