Java之字節輸入流InputStream的簡單介紹

2020-12-11 彼岸end

各位小夥伴們大家好,在之前的文章中,小編介紹了字節輸出流Java之字節輸出流OutputStream的簡單介紹,這次小編要介紹的是字節輸入流InputStream

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

定義了所有子類共性的方法:

1.int read()從輸入流中讀取數據的下一個字節。

2.int read(byte[] b)從輸入流中讀取一定數量的字節,並將其存儲到緩衝數組b中

3.void close()關閉此輸出流並釋放與該流關聯的所有系統資源。

抽象方法無法直接創建父類,我們需要用到抽象方法的子類如FileInputStream。

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

構造方法:

FileInputStream (String name)

FileInputStream (File file)

參數:讀取文件的數據源

String name:文件路徑

File file:文件

構造方法的作用:

會創建一個FileInputStream對象會把FileInputStream對象指定構建方法中要讀取的文件

關於字節輸入流InputStream,小編也介紹的差不多了,接下來,小編要介紹的是讀取數據的一些原理(硬碟-->內存),java-->JVM--->OS-->OS讀取數據的方法-->讀取文件

字節輸入流的使用步驟(重點):

創建FileInputStream對象,構造方法中綁定要讀取的數據源使用FileInputStream對象中的方法read,讀取文件釋放資源代碼如下:

public class Demo01InputStream {

public static void main(String[] args) throws IOException {

//1.創建FileInputStream對象,構造方法中綁定要讀取的數據源

FileInputStream fis=new FileInputStream("D:\\BaiduNetdiskDownload\\c.txt");

//2.使用FileInputStream對象中的方法read,讀取文件

//int read()讀取文件中的一個字節並返回,讀取文件的末尾返回-1

/*int len1=fis.read();

System.out.println(len1);//讀取第一個字節

int len2=fis.read();

System.out.println(len2);//第二個字節

int len3=fis.read();

System.out.println(len3);//第三個字節*/

/*使用循環優化,不知道有多少個字節,使用while循環

while循環結束條件,讀取到-1結束*/

int len=0;//記錄讀取到的字節

while((len=fis.read())!=-1) {

System.out.println(len);

}

//釋放資源

fis.close();

}

}

小編來說一下上面代碼中的循環,其實上面的循環相當於一個布爾表達式(len=fis.read()!=-1:

fis.read():讀取一個字節len=fis.read():把讀取到的字節賦值給變量len(len=fis.read())!=-1:判斷變量len是否不等於-1關於字節輸入流InputStream的定義,使用步驟和原理等,小編就先說到這裡,希望這篇文章可以幫到大家,也歡迎各位小夥伴補充和糾錯

相關焦點

  • java之字符緩衝輸入流,BufferedReader的簡單介紹
    java之字符緩衝輸出流,BufferedWriter的簡單介紹,這次小編要介紹的是字符緩衝輸入流,將字符讀入數組void close()關閉該流並釋放與之關聯的所有資源構造方法:1.BufferedReader(Reader in)構建一個使用默認大小輸入緩衝區的緩衝字符輸入流2.BufferedReader(
  • JAVA IO Stream流總結
    我們把這種數據的傳輸,可以看做是一種數據的流動,按照流動的方向,以內存為基準,分為 輸入input 和 輸出 output ,即流向內存是輸入流,流出內存的輸出流。Java中I/O操作主要是指使用 java.io 包下的內容,進行輸入、輸出操作。輸入也叫做讀取數據,輸出也叫做作寫 出數據。
  • 「JAVA」字節流、字符流、緩衝流、轉換流、內存流、字符編碼
    ,每個字節流api都能在字符流中找到與之相對應的,而且,字符流比字節流有著更好的性能;儘管如此,字符流的設計並不是為了取代字節流,相反,二者同時存在,相輔相成。,用於篩選特定的輸入流和輸出流。字節流又分字節輸入流(InputStream)和字節輸出流(OutputStream),分別對應讀和寫;字節輸入流:FileInputStream,字節輸入流的使用案例代碼如下:
  • 跟我學java編程—Java的標準輸入
    Java核心類System類成員屬性in完成從標準設備獲取用戶輸入的功能,in的類型為InputStream,InputStream類主要用於從不同的輸入源獲取用戶的輸入數據,也包括鍵盤或其它字符輸入終端。InputStream提供了三種方法從輸入源讀取數據,本節主要介紹不帶輸入參數的read方法,另外兩種帶輸入參數的read方法請參考Java API。
  • Java IO流詳解(面試不要再問我IO流)
    注意:一個IO流可以既是輸入流又是字節流又或是以其他方式分類的流類型,是不衝突的。比如FileInputStream,它既是輸入流又是字節流還是文件節點流。Java IO 流有4個抽象基類:其他流都是繼承於這四大基類的。
  • java之字符緩衝輸出流,BufferedWriter的簡單介紹
    各位小夥伴們,大家好在之前的文章中小編介紹了字節緩衝流的相關知識,這次小編要介紹的是字符緩衝輸出流,BufferedWriter,具體如下:java.io.BufferedWriter extends Writer
  • Java基礎之IO流——包含IO流的亂碼問題
    可以簡單記為,輸入流將數據輸入到程序;輸出流將數據從程序中輸出。那麼輸入程序的程序自然要用讀(read)操作,從程序輸出的自然就是寫(write)操作。明白這些之後,我們來看Java的IO流代碼學習。File類的基本操作IO的輸入及輸出IO流的實現通常有兩種方式,字節流和字符流。
  • java之Scanner類的簡單介紹
    各位小夥伴們大家好,這次小編要介紹的是Scanner,它可以實現從鍵盤輸入數據到程序中。Scanner是一個引用類型,接下來小編就簡單介紹引用類型通常情況下的使用步驟。另外,只有java.lang包下的內容不需要導包,其他的包都需要import語句。
  • 理解JAVA輸入輸出流
    一、IO流作用IO流就是用來處理設備上的數據,包括文件,磁碟,網絡等二、分類按處理的數據類型不同:字符流、字節流按流向不同:JAVA 中流的處理是單向的,分為輸入流和輸出流>三、抽象類1、字節流抽象類InputStream 輸入流OutputStream輸出流2、字符流抽象類Reader 輸入字符流Writer 輸出字符流
  • java——Scnner()類下面有幾種方法呢?
    一、Scnner類 Scnner類在java.util包中一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器 findInLine(java.lang.String)、findWithinHorizon(java.lang.String, int) 和 skip(java.util.regex.Pattern) 方法的執行與分隔符模式無關。這些方法會嘗試匹配與輸入中的分隔符無關的指定模式,因此可用於分隔符無關的特殊環境中。在等待更多輸入時這些方法可能阻塞。
  • Java程式設計師必備基礎:Java代碼是怎麼運行的?
    因此,在運行Java程序之前,需要編譯器把代碼編譯成java虛擬機所能識別的指令程序,這就是Java字節碼,即class文件。 所以,Java代碼運行的第一步是:把Java原始碼編譯成.class 字節碼文件。
  • java 中的輸入與輸出流(I/O)
    在Java中,從其中讀入一個字節序列的對象做作輸入流,而可以從其中寫入一個字節序列的對象稱做輸出流。讀入和寫入的來源地和目的地可以是文件,網絡以及內存。其中抽象類InputStream和OutputStream構成輸入和輸出類的基礎。
  • 「014期」JavaSE面試題(十四):基本IO流
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫開篇介紹大家好,我是Java面試題庫的提褲姐,今天這篇是JavaSE系列的第十四篇
  • Java熱加載?操作class字節碼理論知識
    「少年,可以去看看java.lang.instrument.Instrumentation。」java.lang.instrument.Instrumentation看完文檔之後,我們發現這麼兩個接口:redefineClasses和retransformClasses。
  • Java動態字節技術之Javassist
    概述Javassist是一個開源的分析、編輯和創建Java字節碼的類庫,可以直接編輯和生成Java生成的字節碼。相對於bcel, asm等這些工具,開發者不需要了解虛擬機指令,就能動態改變類的結構,或者動態生成類。javassist簡單易用, 快速。
  • Java常見問題集錦(來自sun官方) 第二部分
    但是可以使用ByteArray輸入/輸出流作為中介,來向隨機存取文件中寫入或從隨機存取文件中讀出字節,並且可以利用字節流來創建對象輸入/輸出流,以用於讀寫對象.需要注意的是在字節流中要包含一個完整的對象,否則讀寫對象時將發生錯誤.
  • 黑馬程式設計師:Java輸入、輸出體系相關習題
    習題總結:本文介紹了Java輸入、輸出體系的相關知識。希望大家通過本章的學習,能夠熟練掌握IO流對文件進行讀寫操作,能夠深刻的理解裝飾設計模式的原理,以及如何解決程序中出現的字符亂碼問題。在Java中,__________類用來把兩個或更多InputStream輸入對象合併為單個InputStream輸入流對象使用。Java中提供了一個類___________,它不但具有讀寫文件的功能,並且可以隨機地從文件的任何位置開始執行讀寫數據的操作。
  • java之字符輸出流的續寫與換行
    各位小夥伴們,大家好,在之前的文章中小編介紹了java之字符輸出流寫入數據的其它方法,現在小編要介紹的是java當中的字符輸入流的續寫與換行,雖然很簡單,但是,小編還是要介紹以下的,具體如下:續寫和換行:續寫,追加寫:使用兩個參數的構造方法FileWriter(String fileName,boolean append)
  • 這一次,徹底弄懂 Java 字節碼文件!
    作者 | 東升的思考責編 | Elle不囉嗦,直接從最最簡單的一段Java原始碼開啟Java整體字節碼分析之旅。10)2+n個字節,Attributes附加屬性Class字節碼中有兩種數據類型:字節數據直接量:這是基本的數據類型。共細分為u1、u2、u4、u8四種,分別代表連續的1個字節、2個字節、4個字節、8個字節組成的整體數據。
  • java.io.IOException: mark/reset not supported 異常
    在 Azure 上傳文件的時候遇到了一個下面的異常:java.io.IOException: mark/reset not supportedat java.base/java.io.InputStream.reset