最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

常用輸入字節(jié)流InputStream介紹

 更新時間:2017年08月24日 09:22:21   投稿:jingxian  
下面小編就為大家?guī)硪黄S幂斎胱止?jié)流InputStream介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

輸入字節(jié)流InputStream的一系列實現(xiàn),以下是五種較常用的子類

1、字節(jié)數(shù)組作為輸入源——ByteArrayInputStream

該類包括兩個構(gòu)造方法

ByteArrayInputStream(byte[] buf);
ByteArrayInputStream(byte[] buf,int offset,int length );

該類重寫了InputStream中的所有方法,因此我們可以調(diào)用其父類同名的方法進行讀寫操作。

下面是如何通過一個字節(jié)數(shù)組創(chuàng)建字節(jié)輸入流的過程,并從輸入流中讀取數(shù)據(jù)輸出到操作臺。

import java.io.ByteArrayInputStream;
import java.io.IOException;

public class TestByteArrayInputStream {
 public static void main(String[] args) throws IOException {
  // 初始化字節(jié)數(shù)組
  byte[] buf = new byte[3];
  buf[0] = 100;
  buf[1] = 101;
  buf[2] = 102;
  // 創(chuàng)建輸入流
  ByteArrayInputStream input = new ByteArrayInputStream(buf);
  // 從輸入流中讀取數(shù)據(jù)
  byte[] out = new byte[3];
  input.read(out);
  System.out.println(new String(out));
  // 關(guān)閉輸入流
  input.close();

 }
}

2、文件作為輸入源——FileInputStream

FileInputStream從文件系統(tǒng)中的某個文件中獲取輸入字節(jié),適用于讀取諸如圖像數(shù)據(jù)之類的原始數(shù)據(jù)流。有一下兩種創(chuàng)建方法:

FileInputStream(File file);//通過系統(tǒng)中的File對象file指定
FileInputStream(String name);//通過系統(tǒng)中路徑名name指定同樣的我們使用重寫的InputStream中的方法的名稱來實現(xiàn)讀文件內(nèi)容。

下面是如何讀取磁盤文件來創(chuàng)建一個文件輸入流,循環(huán)讀取該數(shù)據(jù)流中的數(shù)據(jù)并輸數(shù)據(jù)到控制臺。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestFileInputStream {
 public static void main(String[] args) throws FileNotFoundException {
  try {
   // 創(chuàng)建輸入流
   FileInputStream input = new FileInputStream("D:/demo/test.txt");
   // 從輸入流中讀取數(shù)據(jù)
   while (input.available() > 0) {
    int out = input.read();
    System.out.println((char) out);
   }
   // 關(guān)閉輸入流
   input.close();
  } catch (IOException e) {
   e.printStackTrace();
  }
 }
}

3、對象作為輸入源——ObjectInputStream

ObjectInputStream與FileInputStream一起使用時,可以為應(yīng)用程序提供對對象圖形的持久儲存。

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.sql.Date;

public class TestObjectInputStream {
 public static void main(String[] args) throws ClassNotFoundException {
  try {
   // 創(chuàng)建文件輸入流
   FileInputStream file = new FileInputStream("D:/demo?test.tmp");
   // 創(chuàng)建對象輸入流
   ObjectInputStream object = new ObjectInputStream(file);
   // 讀取對象的數(shù)據(jù)
   int i = object.readInt();
   String string = (String) object.readObject();
   Date date = (Date) object.readObject();
   System.out.println("i=" + i);
   System.out.println("string=" + string);
   System.out.println("date=" + date);
   // 關(guān)閉流
   object.close();
   file.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }
}

4、字符串作為輸入源——StringBufferInputStream

StringBufferInputStream允許輸入流由字符串內(nèi)容提供,與ByteArrayInputStream使用字節(jié)數(shù)組作為輸入源類似,但是只有一種構(gòu)造方法:

StringBufferInputStream(String s); //以從指定字符串讀取數(shù)據(jù)

只需要一個字符串作為輸入就可以創(chuàng)建,以下是一個實例:

import java.io.IOException;
import java.io.StringBufferInputStream;

public class TestStringBufferInputStream {
 public static void main(String[] args) {
  // 創(chuàng)建輸入流
  StringBufferInputStream input = new StringBufferInputStream("Hello World!");
  // 從輸入流中讀取數(shù)據(jù)
  while (input.available() > 0) {
   int out = input.read();
   System.out.print((char) out);
  }
  // 關(guān)閉輸入流
  try {
   input.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
}

5、緩存輸入流——BufferedInputStream

BufferedInputStream為另一個輸入流添加一些功能,即緩存輸入功能。在創(chuàng)建BufferedInputStream時,會創(chuàng)建一個內(nèi)部緩存區(qū)間數(shù)組。在讀取或者跳過流中字節(jié)時,可根據(jù)需要從包含的輸入流在此填充該內(nèi)部緩存區(qū),一次填充多個字節(jié)。

如果你需要一個具有緩存的文件輸入流,則應(yīng)當(dāng)組合使用FileInputStream和BufferedInputStream,這將能提高讀取效率。

下面一段代碼是將文件輸入流對象轉(zhuǎn)換成緩存輸入流的過程:

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class TestBufferedInputStream {
 private void mian() {
  // TODO Auto-generated method stub
  try {
   // 創(chuàng)建文件輸入流
   FileInputStream input = new FileInputStream("D:/demo/test.txt");
   BufferedInputStream buffer = new BufferedInputStream(input);
   // 從輸入流中讀取數(shù)據(jù)
   while (buffer.available() > 0) {
    int out = buffer.read();
    System.out.print((char) out);
   }
   // 關(guān)閉流
   buffer.close();
   input.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }
}

以上這篇常用輸入字節(jié)流InputStream介紹就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java?SpringTask定時自動化處理方法

    Java?SpringTask定時自動化處理方法

    這篇文章主要介紹了Java?SpringTask定時自動化處理,通過自動化,不僅可以提高工作效率和準(zhǔn)確性,還可以釋放人力資源以專注于更高價值的工作,需要的朋友可以參考下
    2024-08-08
  • Java 關(guān)于遞歸的調(diào)用機制精細(xì)解讀

    Java 關(guān)于遞歸的調(diào)用機制精細(xì)解讀

    關(guān)于遞歸是什么,簡單的說: 遞歸就是方法自己調(diào)用自己,每次調(diào)用時 傳入不同的變量.遞歸有助于編程者解決復(fù)雜的問題,同時可以讓代碼變得簡潔
    2021-10-10
  • 圖書管理系統(tǒng)java代碼實現(xiàn)

    圖書管理系統(tǒng)java代碼實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了java代碼實現(xiàn)的圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 詳解SpringMVC?HandlerInterceptor攔截器的使用與參數(shù)

    詳解SpringMVC?HandlerInterceptor攔截器的使用與參數(shù)

    本文主要介紹了詳解SpringMVC?HandlerInterceptor攔截器的使用與參數(shù),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java FileWriter輸出換行操作

    Java FileWriter輸出換行操作

    這篇文章主要介紹了Java FileWriter輸出換行操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Netty分布式pipeline管道傳播outBound事件源碼解析

    Netty分布式pipeline管道傳播outBound事件源碼解析

    這篇文章主要介紹了Netty分布式pipeline管道傳播outBound事件源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • SpringBoot3.3.X整合Mybatis-Plus的實現(xiàn)示例

    SpringBoot3.3.X整合Mybatis-Plus的實現(xiàn)示例

    本文介紹了在Spring Boot 3.3.2中整合MyBatis-Plus 3.5.7,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • 利用mysql實現(xiàn)的雪花算法案例

    利用mysql實現(xiàn)的雪花算法案例

    這篇文章主要介紹了利用mysql實現(xiàn)的雪花算法案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • java判斷class子類或父類的實例方法

    java判斷class子類或父類的實例方法

    在本篇文章里小編給大家整理的是關(guān)于java判斷class子類或父類的實例方法,需要的朋友們可以參考學(xué)習(xí)下。
    2020-02-02
  • Java枚舉類使用場景及實例解析

    Java枚舉類使用場景及實例解析

    這篇文章主要介紹了Java枚舉類使用場景及實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04

最新評論

镇安县| 漾濞| 连江县| 阿图什市| 铜鼓县| 义马市| 云龙县| 田东县| 新巴尔虎左旗| 罗定市| 南漳县| 开鲁县| 米泉市| 永昌县| 三明市| 炎陵县| 柞水县| 新蔡县| 齐齐哈尔市| 建德市| 南郑县| 赤城县| 尼木县| 河间市| 宜都市| 克拉玛依市| 五指山市| 罗田县| 新巴尔虎左旗| 淮北市| 炎陵县| 电白县| 玛多县| 兴安盟| 盖州市| 乐山市| 馆陶县| 云霄县| 将乐县| 洪泽县| 宣武区|