欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2017年08月24日 09:22:21   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇常用輸入字節(jié)流InputStream介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

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

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

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

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

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

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)中的某個(gè)文件中獲取輸入字節(jié),適用于讀取諸如圖像數(shù)據(jù)之類(lèi)的原始數(shù)據(jù)流。有一下兩種創(chuàng)建方法:

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

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

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、對(duì)象作為輸入源——ObjectInputStream

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

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)建對(duì)象輸入流
   ObjectInputStream object = new ObjectInputStream(file);
   // 讀取對(duì)象的數(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ù)組作為輸入源類(lèi)似,但是只有一種構(gòu)造方法:

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

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

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

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

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

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介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot項(xiàng)目修改訪(fǎng)問(wèn)端口和訪(fǎng)問(wèn)路徑的方法

    SpringBoot項(xiàng)目修改訪(fǎng)問(wèn)端口和訪(fǎng)問(wèn)路徑的方法

    這篇文章主要介紹了SpringBoot項(xiàng)目修改訪(fǎng)問(wèn)端口和訪(fǎng)問(wèn)路徑的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 探索Java中private方法添加@Transactional事務(wù)未生效原因

    探索Java中private方法添加@Transactional事務(wù)未生效原因

    你又遇到過(guò)明明給private方法添加了@Transactional但是事務(wù)依然沒(méi)有生效的情況嗎,具體原因本篇文章將詳細(xì)告訴你,有需要的朋友跟著小編往下看吧
    2021-11-11
  • Spring?boot?RedisTemplate?序列化服務(wù)化配置方式

    Spring?boot?RedisTemplate?序列化服務(wù)化配置方式

    這篇文章主要介紹了Springboot?RedisTemplate序列化服務(wù)化配置方式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Java實(shí)例講解文件上傳與跨域問(wèn)題

    Java實(shí)例講解文件上傳與跨域問(wèn)題

    這篇文章主要介紹了Java文件上傳與跨域問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)全過(guò)程

    SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)全過(guò)程

    Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和授權(quán)框架,專(zhuān)門(mén)用于保護(hù)Java應(yīng)用程序的Web集成,下面這篇文章主要給大家介紹了關(guān)于SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Java實(shí)現(xiàn)文件名倒序排序的技術(shù)指南

    Java實(shí)現(xiàn)文件名倒序排序的技術(shù)指南

    在實(shí)際開(kāi)發(fā)過(guò)程中,我們經(jīng)常需要對(duì)文件進(jìn)行操作和處理,一個(gè)常見(jiàn)的需求是按文件名倒序排列文件列表,以便于文件的管理和查找,本文將介紹如何在Java中實(shí)現(xiàn)文件名倒序排序,并提供詳細(xì)的代碼案例,需要的朋友可以參考下
    2024-08-08
  • springmvc4+hibernate4分頁(yè)查詢(xún)功能實(shí)現(xiàn)

    springmvc4+hibernate4分頁(yè)查詢(xún)功能實(shí)現(xiàn)

    本篇文章主要介紹了springmvc4+hibernate4分頁(yè)查詢(xún)功能實(shí)現(xiàn),Springmvc+hibernate成為現(xiàn)在很多人用的框架整合,有興趣的可以了解一下。
    2017-01-01
  • Java延遲隊(duì)列原理與用法實(shí)例詳解

    Java延遲隊(duì)列原理與用法實(shí)例詳解

    這篇文章主要介紹了Java延遲隊(duì)列原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了延遲隊(duì)列的概念、原理、功能及具體使用方法,需要的朋友可以參考下
    2018-09-09
  • 深入分析RabbitMQ中死信隊(duì)列與死信交換機(jī)

    深入分析RabbitMQ中死信隊(duì)列與死信交換機(jī)

    這篇文章主要介紹了RabbitMQ中死信隊(duì)列與死信交換機(jī),死信隊(duì)列就是一個(gè)普通的交換機(jī),有些隊(duì)列的消息成為死信后,一般情況下會(huì)被RabbitMQ清理,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05
  • Java 深入探究講解抽象工廠(chǎng)模式

    Java 深入探究講解抽象工廠(chǎng)模式

    當(dāng)系統(tǒng)所提供的工廠(chǎng)所需生產(chǎn)的具體產(chǎn)品并不是一個(gè)簡(jiǎn)單的對(duì)象,而是多個(gè)位于不同產(chǎn)品等級(jí)結(jié)構(gòu)中屬于不同類(lèi)型的具體產(chǎn)品時(shí)需要使用抽象工廠(chǎng)模式,抽象工廠(chǎng)模式是所有形式的工廠(chǎng)模式中最為抽象和最具一般性的一種形態(tài)
    2022-04-04

最新評(píng)論