IO流簡介
- 2019 年 10 月 30 日
- 筆記
版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/luo4105/article/details/69936268
IO流即輸入/input、輸出/output流(InputStream、OutputStream),可以實現文件的上傳、下載功能。
上傳、下載的基本流程
1.獲得輸入流
InputStream is = new InputSteam(new File(「url地址」));
2.read輸入流得到byte[]
byte[] bytes=new bytes[1024]; is.read(bytes);
3.創建輸入流OutputStream
OutputStream osm = new OutputStream(new File(「url地址」));
4.寫出文件
int i; While((i = is.read(bytes)) != -1) { osm.write(bytes, 0, i); }
is.read(byte[])時,從輸入流中讀取一定數量的位元組,並將其存儲在數組 bytes 中。以整數形式返回實際讀取的位元組數。在輸入數據可用、檢測到文件末尾或者拋出異常前,此方法一直阻塞線程。如果 bytes 的長度為 0,則不讀取任何位元組並返回 0;否則,嘗試讀取至少一個位元組。如果因為流位於文件末尾而沒有可用的位元組,則返回值 -1;否則,至少讀取一個位元組並將其存儲在 bytes 中。將讀取的第一個位元組存儲在元素 bytes[0] 中,下一個存儲在 bytes[1] 中,依次類推。讀取的位元組數最多等於 bytes 的長度。設 k 為實際讀取的位元組數;這些位元組將存儲在 bytes[0] 到 bytes[k-1] 的元素中,不影響 bytes[k] 到 bytes[bytes.length-1] 的元素。
IO是線程堵塞的,若要線程不都塞,用NIO。