字節(jié)流、InputStream類、OutputStream類、標準輸入System.in和標準輸出System.out
大家好,我是Java進階者。
前言
在很多的應用程序中需要實現(xiàn)與設備之間的數(shù)據傳輸,例如通過鍵盤輸入。輸出的設備例如顯示器,在不同的輸入和輸出設備中數(shù)據傳輸抽象表示“流”,程序通過流的方式的輸出和輸入設備進行數(shù)據傳輸。本文主要學習Java的字節(jié)流,接下來小編帶大家一起來學習!
一、字節(jié)流
1.什么是字節(jié)流
在我們計算中,無論在文本,圖片,視頻等,這些文件都是以二進制的形式存在,IO流中是針對字節(jié)的輸入和輸出提供一系列的流稱為字節(jié)流。
2.數(shù)據流可以分為字節(jié)輸入流和字節(jié)輸出流。
3.輸入流表示從其他設備流入計算機的數(shù)據,輸出流表示從計算機流向外部設備的數(shù)據。
4.Java語言處理輸入輸出數(shù)據的功能,表現(xiàn)在java.io包中。
二、InputStream類
1.InputStream類是一個抽象類,作為字節(jié)輸入流的直接或間接的父類。
2.InputStream類常用方法:
(1)public int read()方法:從輸入流讀取數(shù)據的下一個字節(jié),把它轉換為0~255之間的整數(shù),然后返回一個整數(shù)。
(2)public int read(byte[] b)方法:從輸入流中讀取若干字節(jié),把這些字節(jié)存儲到參數(shù)b指定的字節(jié)數(shù)組中,然后返回的整數(shù)表示讀取的字節(jié)數(shù)
(3)public int read(byte[] b,int off,int len)方法:表示從數(shù)組b的第off個位置起讀取len個字節(jié)。off表示字節(jié)數(shù)組開始存儲數(shù)據的起始下標,len表示讀取的字節(jié)數(shù)目。
(4)public void close()方法:表示關閉此輸入流并釋放與該流關聯(lián)的所有系統(tǒng)資源。
上面介紹了InputStream類常用方法,int read()、int read(byte[] b)、int read(byte[] b,int off,int len)方法是用來讀取數(shù)據的,int read()方法是從輸入流中逐個讀入字節(jié),int read(byte[] b)、int read(byte[] b,int off,int len)方法是把若干個字節(jié)以數(shù)組的形式一次性讀入,提高了讀取數(shù)據的效率。close()方法是關閉流。
三、OutputStream類
1.OutputStream類是一個抽象類,作為字節(jié)輸出流的直接或間接的父類。
2.OutputStream類常用方法:
(1)public void write(int b)方法:一個整型數(shù)據向流中寫入數(shù)據。
(2)public void write(byte [] b)方法:參數(shù)b指定的字節(jié)數(shù)組的所有字節(jié)寫到輸出流。
(3)public void write(byte[] b, int off, int len)方法:以字節(jié)方式向流中寫入數(shù)據,off表示起始位置,len為長度。
(4)public void close()方法:表示關閉此輸入流并釋放與該流關聯(lián)的所有系統(tǒng)資源。
四、標準輸入System.in
1.System.in是字節(jié)輸入流類InputStream對象in實現(xiàn)標準輸入,其中它read()方法從鍵盤接受數(shù)據,當發(fā)生I/O錯誤時,拋出IOException異常。
2.Scanner類可以使用in初始化一個對象:
- Scanner sc=new Scanner(System.in)
五、標準輸出System.out
1.System.out是用于屏幕輸出,常用的調用方法有print(表示不換行)和println(表示換行),這兩個方法支持Java的任意基本類型作為參數(shù)。
2.print和println例子:
- System.out.print("hello world!");//表示不換行
- System.out.println("hello world");//表示換行
六、 InputStream讀取文件
1.使用InputStream對文件進行操作,當讀取文件內容,創(chuàng)建一個數(shù)組來保存文件的內容。
2.在Text文件夾準備一個test05.txt文件,內容是“Java進階學習交流”,創(chuàng)建輸入流,參數(shù)為一個文件,再創(chuàng)建字節(jié)數(shù)組,其長度是1024。定義一個int類型的temp變量保存讀取的內容,寫一個while循環(huán)當沒有讀取完的,繼續(xù)讀取,讀取完再關閉數(shù)據流。
3.例子的實現(xiàn):
(1)準備一個test05.txt文件并寫入內容如下圖所示:
(2)實現(xiàn)的代碼:
- import java.io.*;
- public class P04 {
- public static void main(String[] args) throws Exception {
- // TODO Auto-generated method stub
- File f = new File("text/test05");
- InputStream in = new FileInputStream(f);
- byte b[] = new byte[1024];
- int num = 0;
- int temp=0; //定義一個int類型的temp變量保存讀取的內容
- while((temp=in.read())!=-1){//若沒有讀取完時,繼續(xù)讀取內容
- b[num]=(byte)temp;
- num++;
- }
- in.close();
- System.out.println("讀取內容的是:"+new String(b,0,num));
- }
- }
運行的結果圖如下所示:
七、總結
本文主要介紹了字節(jié)流、InputStream類、OutputStream類、標準輸入System.in和標準輸出System.out、InputStream讀取文件。IO流中是針對字節(jié)的輸入和輸出提供一系列的流稱為字節(jié)流。
InputStream類是一個抽象類,作為字節(jié)輸入流的直接或間接的父類。OutputStream類是一個抽象類,作為字節(jié)輸出流的直接或間接的父類。System.in是字節(jié)輸入流類InputStream對象in實現(xiàn)標準輸入,其中它read()方法從鍵盤接受數(shù)據,當發(fā)生I/O錯誤時,拋出IOException異常。System.out是用于屏幕輸出,常用的調用方法有print(表示不換行)和println(表示換行)。InputStream讀取文件通過例子幫助理解它的用法。希望通過本文的學習,對你有所幫助!