通過資料流、序列化和檔案系統提供系統輸入和輸出。
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...