Io流小總結

2021-08-27 00:03:29 字數 4604 閱讀 8875

通過資料流、序列化和檔案系統提供系統輸入和輸出。

2.    i =>   input 輸出---將資料來源讀到記憶體中;

o =>  output 輸出---將記憶體資料寫到硬碟中。

資料流「流」就像一根管道,資料在管道中的走向就叫資料流。

作用  用來處理裝置之間的資料傳輸。

電腦中檔案的展示形式: 檔案和資料夾

操作方式: 讀和寫

位元組流:位元組流是用來處理二進位制(0、1)資料,它是按位元組來處理的。

流|        |--inputstream(輸入流)

|        |     |--fileinputstream --檔案輸入流   這些類的作用是什麼?什麼時候用?

|        |     |--bufferedinputstream --緩衝輸入流

|--位元組流|     |--objectinputstream --物件輸入流

|        |     |--datainputstream --資料輸入流

|        |     |--bytearrayinputstream --記憶體輸入流

|        |--outputstream(輸出流)

|              |--fileoutputstream --檔案輸出流

|              |--bufferedoutputstream --緩衝輸出流

|              |--objectoutputstream --物件輸出流

|              |--dataoutputstream --資料輸出流

|              |--bytearrayoutputstream --記憶體輸出流

|              |--printoutputstream --列印輸出流

||--字元流|--reader(輸入流)

|     |--filereader --檔案輸入流

|     |--bufferedreader --緩衝輸入流

|--writer(輸出流)

|--filewriter --檔案輸出流                   |--bufferedwriter --緩衝輸出流

inputstreamreader --位元組轉字元輸入流

outputstreamwriter類 --位元組轉字元輸出流

字元流

總結:所有以stream結尾的都是位元組流

所有以reader或者writer結尾的都是字元流

io流就這麼簡單:

第1:明確用哪種流?位元組流?字元流?

第2:輸入還是輸出?站的角度

第3:明確操作的介質

硬碟----file類  fileinputstream   fileoutputstream

控制台--system.in   system.out

陣列----bytearrayinputstream  bytearrayoutputstream

網路----socket

序列化和反序列化 objectinputstream objectoutputstream

第4:是否需要提高效率?是否需要轉換?

第5:方法

位元組輸入流 fileinputstream read()

位元組輸出流 fileoutputstream writer()

字元輸入流 reader read() readline()

字元輸出流 writer writer()

序列化 writerobject()     readobject()

//模擬scanner

//通過流的方式

// inputstream is = system.in;

// byte by= new byte[1024];

// system.out.println("請輸入:");

// int n = is.read(by);   //scanner的接收**  .next()

// string str =new string(by,0,n);

// system.out.println("你輸入字串是:"+str);

url :統一資源定位符,它是網際網路「資源」的指標。 127.0.0.1 localhost

url   url=new url(「  **    」);

url.gethost();  獲得物件的主機名

url.getdefaultport();   獲得物件的預設埠號

url.getpath();   獲得路徑部分

url.getport   獲得埠號

url.getfile  獲得檔名

url.openstream  開啟到此url的連線,並返回乙個用於從該連線讀入的 inputstream。

位元組流案例:

inputstream is=url.openstream();                           //開啟伺服器的讀入連線

bufferedinputstream bis=new bufferedinputstream(is);

fileoutputstream fos=new fileoutputstream("e:\\temp\\baidu.png");  //建立檔案輸出流,用於將接收到的流存入該檔案,注意檔案的副檔名最好保持一致。

bufferedoutputstream bos=new bufferedoutputstream(fos);

int n=0;

while((n=bis.read())!=-1)

bos.close();

bis.close();

位元組流轉字元流

1. inputstreamreader  位元組輸入流轉字元輸入流

outputstreamwriter  位元組輸出流轉字元輸出流

intoutstreanreader類

作用: 將位元組流轉換成字元流,是位元組流通向字元流的橋梁。

tcp協議與udp協議

兩者的區別:

tcp:連線 == 打** == 雙方建立通道,資訊在通道中傳送,雙方響應,資訊傳遞可靠性高,但資源開銷大,獨佔乙個通道,在斷開連線前不能建立另乙個連線(兩人打**,第三人不能打入)。

udp:無連線 == 寄信 == 就是傳送資訊,沒有開始與結束,一次性傳遞,也不需要接受方響應,無法保證資訊傳遞的可靠性(寄了,但不一定能收到)。

網路聊天

套接字 socket:(面向tcp)

其用於標識客戶端請求的伺服器和服務,源ip位址和目的ip位址以及源埠號的組合稱為套接字

構造方法:socket(inetaddress address, int port)

//建立乙個流套接字並將其連線到指定 ip 位址的指定埠號。

例:socket sk=new socket(inetaddress.getbyname("127.0.0.1"), 8866);

getinetaddress();遠端服務端的ip位址

getport();遠端服務端的埠

getlocaladdress();本地客戶端的ip位址

getlocalport();本地客戶端的埠

getinputstream();獲得輸入流

getoutputstream();獲得輸出流

1.程序與執行緒

程序==就是正在進行的程式。

cpu在某一段時間只處理乙個程式,程式也是乙個程序,當程式結束,程序也消失。

b.執行緒==就是程式中的乙個執行路徑(控制單元)

執行緒在控制著進行的執行。

它是真正的執行者

c.為什麼需要多執行緒?

大型應用程式都需要高效地完成大量任務,其中使用多執行緒就是乙個提高效率的重要途徑。

d.程序與執行緒的關係:

乙個程序中至少包含有乙個或多個執行緒。

多執行緒可以讓我們程式部分可以產生同是執行的效果,各玩個的。提高效率是其次,主要是能讓多段**同時執行。

示例:得到當前執行緒名

system.out.println(thread.currentthread().getname);

多執行緒的目的

為了最大限度的利用cpu資源。

執行緒排程

按照特定的機制為多個執行緒分配cpu的使用權

分時排程    搶占式排程

IO流 字元流 IO流小結 IO流案例總結

1 字元流 掌握 1 位元組流操作中文資料不是特別的方便,所以就出現了轉換流。轉換流的作用就是把位元組流轉換字元流來使用。2 轉換流其實是乙個字元流 字元流 位元組流 編碼表 3 編碼表 a 就是由字元和對應的數值組成的一張表 b 常見的編碼表 ascii iso 8859 1 gb2312 gbk...

IO流加強 總結 IO流總結和練習

1.流都是用來傳輸資料的。2.傳輸資料時,一定要明確資料來源和資料目的地 資料匯 3.資料來源可以是檔案 鍵盤和其他流。4.資料目的地可以是檔案 顯示器或者其他流。5,流只是幫助資料進行傳輸,可以在傳輸資料的時候進行處理。比如過濾處理 轉換處理等。使用要點 看頂層 字元流還是位元組流,父類公共性功能...

android中IO流的小總結上

io流的運用 1,在記憶體中的讀寫 1 寫入 fileoutputstream fos this.openfileoutput 檔名,模式 獲得要寫入的資料來源string str fos.write str.tobytearray fos.flush fos.close 2 讀取 fileinpu...