有時(shí)候在寫網(wǎng)絡(luò)編程的時(shí)候需要處理上傳下載的東西,這時(shí)候需要我們使用流操作渠鸽。
首先我們先明白我們流的結(jié)構(gòu)
java的流分為字節(jié)流和字符流叫乌。
字節(jié)流的的單位為字節(jié),而我們字符流單位為字符徽缚,因?yàn)閖ava使用的Unicode憨奸,一個字符占兩個字節(jié)
由此我們可以知道我們在網(wǎng)絡(luò)之中對圖片視頻的處理我們都會使用字節(jié)流
其次我們的Out Stream和Input Stream 的含義針對于程序而言。
我們的的Out Stream寓意我們程序要對外流出東西凿试,而相反對于Input排宰,我們要對程序中流入東西。
還有的是那婉,我們的一個流要么是讀要么是寫板甘,如要實(shí)現(xiàn)對一文件讀寫,可以寫兩個流详炬。
主要流的類有
主要的類如下:
1. File(文件特征與管理):用于文件或者目錄的描述信息盐类,例如生成新目錄,修改文件名呛谜,刪除文件在跳,判斷文件所在路徑等。
2. InputStream(二進(jìn)制格式操作):抽象類隐岛,基于字節(jié)的輸入操作猫妙,是所有輸入流的父類。定義了所有輸入流都具有的共同特征聚凹。
3. OutputStream(二進(jìn)制格式操作):抽象類割坠∑胫悖基于字節(jié)的輸出操作。是所有輸出流的父類彼哼。定義了所有輸出流都具有的共同特征对妄。
4.Reader(文件格式操作):抽象類,基于字符的輸入操作沪羔。
5. Writer(文件格式操作):抽象類,基于字符的輸出操作象浑。
6. RandomAccessFile(隨機(jī)文件操作):一個獨(dú)立的類蔫饰,直接繼承至Object.它的功能豐富,可以從文件的任意位置進(jìn)行存扔洳颉(輸入輸出)操作篓吁。
最后我有一段代碼幫助理解:
這是我的一個目錄文件夾:
接下來我會使用流進(jìn)行一個復(fù)制操作:
try {
InputStream inputStream = new FileInputStream("D:\l\timg.jpg");
byte[] data = new byte[1024];
OutputStream outputStrea = new FileOutputStream("D:\l\timg2.jpg");
int flag = inputStream.read(data);
while(flag != -1){
outputStrea.write(data);
flag = inputStream.read(data);
}
inputStream.close();
outputStrea.close();
}catch (Exception e){
System.out.println(e.getMessage());
}
運(yùn)行之后:
對于各個具體的流具體操作,我這里建議去讀API蚪拦,如果還有什么不明白杖剪,可以去看以下博客
https://www.cnblogs.com/ylspace/p/8128112.html
https://blog.csdn.net/annotation_yang/article/details/78397239