Java I/O 流詳解__java

來源:互聯網
上載者:User
原文地址: http://blog.csdn.net/jiangwei0910410003/article/details/22376895
摘要:

Java 流在處理上分為字元流和位元組流。字元流處理的單元為 2 個位元組的 Unicode 字元,分別操作字元、字元數組或字串,而位元組流處理單元為 1 個位元組,操作位元組和位元組數組。

Java 內用 Unicode 編碼儲存字元,字元流處理類負責將外部的其他編碼的字元流和 java 內 Unicode 字元流之間的轉換。而類 InputStreamReader 和 OutputStreamWriter 處理字元流和位元組流的轉換。字元流(一次可以處理一個緩衝區)一次操作比位元組流(一次一個位元組)效率高。 

  (一)以位元組為導向的 Stream------InputStream/OutputStream

InputStream 和 OutputStream 是兩個 abstact 類,對於位元組為導向的 stream 都擴充這兩個基類; 1、 InputStream

 

 


基類InputStream:

構造方法:

InputStream() 建立一個輸入的stream流

方法:

available():返回stream中的可讀位元組數,inputstream類中的這個方法始終返回的是0,這個方法需要子類去實現。

close():關閉stream方法,這個是每次在用完流之後必須調用的方法。

read():方法是讀取一個byte位元組,但是返回的是int。

read(byte[]):一次性讀取內容到緩衝位元組數組

read(byte[],int,int):從資料流中的哪個位置offset開始讀長度為len的內容到緩衝位元組數組

skip(long):從stream中跳過long型別參數個位置

以上的方法都是很簡單理解的,這裡就不寫代碼介紹了。

下面還有三個方法:

mark(int):用於標記stream的作用

markSupported():返回的是boolean類型,因為不是所有的stream都可以調用mark方法的,這個方法就是用來判斷stream是否可以調用mark方法和reset方法

reset():這個方法和mark方法一起使用的,讓stream回到mark的位置。

上面說的可能抽象了點,下面就用代碼來解釋一下吧:

[java]  view plain  copy   package com.io.demo;      import java.io.BufferedInputStream;   import java.io.BufferedOutputStream;   import java.io.File;   import java.io.FileInputStream;   import java.io.FileOutputStream;   import java.io.IOException;   import java.io.InputStream;   import java.io.OutputStream;      public class InputStreamTest {       public static void main(String[] args) throws IOException {           writeToFile();           readFromFile();       }          private static void readFromFile() {           InputStream inputStream = null;           try {               inputStream = new BufferedInputStream(new FileInputStream(new File("test.txt")));               // 判斷該輸入資料流是否支援mark操作               if (!inputStream.markSupported()) {                   System.out.println("mark/reset not supported!");                   return;               }               int ch;               int count = 0;               boolean marked = false;               while ((ch = inputStream.read()) != -1) {                   System.out.print("." + ch);                   if ((ch == 4

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.