JAVAIO編程——字節輸入流

前言:InputStream是一個提供字節輸入流的實現類

public abstract class InputStream
extends Object
implements Closeable
這個抽象類是表示輸入字節流的所有類的超類。

在進行讀取的時候是不會用到系統緩衝區的,也就是說爲了防止過多的寫入纔會提供有寫入緩衝區,寫入的緩衝區才需要清空處理,所以InputStream不會實現Flushable接口

常用方法

public abstract int read()
                  throws IOException
從輸入流讀取數據的下一個字節。 值字節被返回作爲int範圍0255 。 如果沒有字節可用,因爲已經到達流的末尾,則返回值-1
public int read(byte[] b)
         throws IOException
從輸入流讀取一些字節數,並將它們存儲到緩衝區b 。 實際讀取的字節數作爲整數返回。 如果沒有字節可用,因爲已經到達流的末尾,則返回值-1
public int read(byte[] b,
                int off,
                int len)
         throws IOException
從輸入流讀取len字節的數據到一個字節數組。 嘗試讀取多達len個字節,但可以讀取較小的數字。 實際讀取的字節數作爲整數返回。
如果len爲零,則不會讀取字節並返回0 ; 否則,嘗試讀取至少一個字節。 如果沒有字節可用,因爲流是文件的-1則返回值-1 ; 否則,讀取至少一個字節並存儲到b 。

在這裏插入圖片描述

public class Test {
    public static void main(String[] args) throws IOException {
        //定義要進行輸出的磁盤完成路徑
        File file = new File("D:" + File.separator + "test-new.txt");
        if (file.exists()) {
            //實例化輸入流對象
            InputStream fileInputStream = new FileInputStream(file);
            //開闢一個空間進行數據讀取
            byte[] bytes = new byte[1024];
            //將輸入流的內容讀取到字節數組之中
            fileInputStream.read(bytes);
            System.out.println("[結果:"+new String(bytes)+"]");
            fileInputStream.close();
        }

    }
}

在這裏插入圖片描述
在這裏插入圖片描述
出現這樣的原因是因爲字節數組的空間太大,遠超內容空間,因此可以讀取輸入的長度

public class Test {
    public static void main(String[] args) throws IOException {
        //定義要進行輸出的磁盤完成路徑
        File file = new File("D:" + File.separator + "test-new.txt");
        if (file.exists()) {
            //實例化輸入流對象
            InputStream fileInputStream = new FileInputStream(file);
            //開闢一個空間進行數據讀取
            byte[] bytes = new byte[1024];
            //將輸入流的內容讀取到字節數組之中
            int read = fileInputStream.read(bytes);
            System.out.println("[結果:"+new String(bytes,0,read)+"]");
            fileInputStream.close();
        }

    }
}

這樣就解決啦

public int available()
              throws IOException
返回從此輸入流中可以讀取(或跳過)的剩餘字節數的估計值,可用於判斷文件大小。若文件大於5M儘量不要一次性讀取
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章