日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

字节输入流 InputStream

發布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 字节输入流 InputStream 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字節輸入流【InputStream

?java.io.InputStream:字節輸入流
? ? 此抽象類是表示字節輸入流的所有類的超類。

? ? 定義了所有子類共性的方法:
? ? ? ? ?int read()從輸入流中讀取數據的下一個字節。
? ? ? ? ?int read(byte[] b) 從輸入流中讀取一定數量的字節,并將其存儲在緩沖區數組 b 中。
? ? ? ? ?void close() 關閉此輸入流并釋放與該流關聯的所有系統資源。

? ? java.io.FileInputStream extends InputStream
? ? FileInputStream:文件字節輸入流
? ? 作用:把硬盤文件中的數據,讀取到內存中使用

? ? 構造方法:
? ? ? ? FileInputStream(String name)
? ? ? ? FileInputStream(File file)

? ? ? ? 參數:讀取文件的數據源
? ? ? ? ? ? String name:文件的路徑
? ? ? ? ? ? File file:文件
? ? ? ? 構造方法的作用:
? ? ? ? ? ? 1.會創建一個 FileInputStream 對象
? ? ? ? ? ? 2.會把 FileInputStream對象 指定構造方法中要讀取的文件

? ? 讀取數據的原理(硬盤-->內存)
? ? ? ? java程序-->JVM-->OS-->OS讀取數據的方法-->讀取文件

? ? 字節輸入流的使用步驟(重點):
? ? ? ? 1.創建 FileInputStream對象,構造方法中綁定要讀取的數據源
? ? ? ? 2.使用 FileInputStream對象中的方法read ,讀取文件
? ? ? ? 3.釋放資源



2.使用FileInputStream對象中的方法read,讀取文件
? ? ? ? int read()讀取文件中的一個字節并返回,讀取到文件的末尾返回-1
? ? ? ? int len = fis.read();
? ? ? ? System.out.println(len);//97 a

? ? ? ? len = fis.read();
? ? ? ? System.out.println(len);// 98 b

? ? ? ? len = fis.read();
? ? ? ? System.out.println(len);//99 c

? ? ? ? len = fis.read();
? ? ? ? System.out.println(len);//-1

? ? ? ? len = fis.read();
? ? ? ? System.out.println(len);//-1


? ? ? ? ? ?發現以上讀取文件是一個重復的過程,所以可以使用循環優化
? ? ? ? ? ? 不知道文件中有多少字節,使用while循環
? ? ? ? ? ? while循環結束條件,讀取到-1的時候結束

? ? ? ? ? ? 布爾表達式(len = fis.read()) != -1
? ? ? ? ? ? ? ? 1.fis.read():讀取一個字節
? ? ? ? ? ? ? ? 2.len = fis.read():把讀取到的字節賦值給變量len
? ? ? ? ? ? ? ? 3.(len = fis.read())!=-1:判斷變量len是否不等于-1

?注:?(len = fis.read()) != -1 這個是必須的,不能直接使用?fis.read()?!= -1

package com.itheima.demo02.InputStream;import java.io.FileInputStream; import java.io.IOException;public class Demo01InputStream {public static void main(String[] args) throws IOException {//1.創建FileInputStream對象,構造方法中綁定要讀取的數據源FileInputStream fis = new FileInputStream("09_IOAndProperties\\c.txt");int len = 0; //記錄讀取到的字節while((len = fis.read())!= -1){System.out.print(len);//abc}//3.釋放資源fis.close();} }



字節輸入流一次讀取多個字節的方法:
? ? ? ? int read(byte[ ] b) 從輸入流中讀取一定數量的字節,并將其存儲在緩沖區數組 b 中。
? ? 明確兩件事情:
? ? ? ? 1.方法的參數byte[]的作用?
? ? ? ? ? ?
起到緩沖作用,存儲每次讀取到的多個字節
? ? ? ? ? ? 數組的長度一把定義為1024(1kb)或者1024的整數倍

? ? ? ? 2.方法的返回值int是什么?
? ? ? ? ? ? 每次讀取的有效字節個數

? ? String類的構造方法
? ? ? ? String(byte[ ] bytes) :把字節數組轉換為字符串
? ? ? ? String(byte[ ] bytes, int offset, int length) 把字節數組的一部分轉換為字符串 offset:數組的開始索引 length:轉換的字節個數

package com.itheima.demo02.InputStream;import java.io.FileInputStream; import java.io.IOException;public class Demo02InputStream {public static void main(String[] args) throws IOException {//創建FileInputStream對象,構造方法中綁定要讀取的數據源FileInputStream fis = new FileInputStream("09_IOAndProperties\\b.txt");//使用FileInputStream對象中的方法read讀取文件//int read(byte[] b) 從輸入流中讀取一定數量的字節,并將其存儲在緩沖區數組 b 中。byte[] bytes = new byte[1024];//存儲讀取到的多個字節int len = 0; //記錄每次讀取的有效字節個數while((len = fis.read(bytes))!=-1){//String(byte[] bytes, int offset, int length) 把字節數組的一部分轉換為字符串 offset:數組的開始索引 length:轉換的字節個數System.out.println(new String(bytes,0,len));}//釋放資源fis.close();} }

總結

以上是生活随笔為你收集整理的字节输入流 InputStream的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。