<JAVA>字節流,字符流
阿新 • • 發佈:2018-06-19
off 抽象類 數據 put 就會 In 向上轉型 new 數據流
在程序中所有的數據都是以流的方式進行傳輸或者保存的,程序需要數據的時候需要使用輸入流讀取數據,而當程序需要將一些數據保存起來的時候,就要使用輸出流。
可以通過下面的輸入輸出流關系圖表示這種方式。
字節流:
字節流主要操作byte類型數據,以byte數組為準,主要操作類是OutputStream類和InputStream類。
其中OutputStream類是一個抽象類,如若要使用此類,首先就必須要通過子類來實例化對象。假設現在要操作的事一個文件,則可以使用FileOutputStream類,通過向上轉型後,可以為OutputStream實例化,在OutputStream類中的主要操作方法如下:
1 public void close() throws IOException //關閉輸出流 2 public void flush() throws IOException //刷新緩沖區 3 public void write(byte[] b) throws IOException //將一個byte數組寫入數據流 4 public void write(byte[] b,int off,int len) throws IOException //將一個指定範圍的byte數組寫入數據流 5 public abstract void write(int b) throws IOException //將一個字節數據寫入數據流
操作時必須接收File類實例,指明要輸出的文件路徑。
InputStream是一個輸入流,也就是用來讀取文件的流,抽象方法read讀取下一個字節,當讀取到文件的末尾時候返回 -1。如果流中沒有數據read就會阻塞直至數據到來或者異常出現或者流關閉。這是一個受查異常,具體的調用者必須處理異常。除了一次讀取一個字節,InputStream中還提供了read(byte[]),讀取多個字節。read(byte[])其實默認調用的還是read(byte b[], int off, int len)方法,表示每讀取一個字節就放在b[off++]中,總共讀取len個字節,但是往往會出現流中字節數小於len,所以返回的是實際讀取到的字節數。
public class Test_InputOrOutput { public static void main(String[] args) throws IOException{ FileInputStream fin = new FileInputStream("hello.txt"); byte[] buffer = new byte[1024]; int x = fin.read(buffer,0,buffer.length); String str = new String(buffer); System.out.println(str); System.out.println(x); fin.close(); } }
以上為讀取方法。
<JAVA>字節流,字符流