91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用InputStream字節流

發布時間:2020-12-02 17:02:45 來源:億速云 閱讀:195 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關如何使用InputStream字節流,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

1、字節數組作為輸入源——ByteArrayInputStream

該類包括兩個構造方法

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

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

下面是如何通過一個字節數組創建字節輸入流的過程,并從輸入流中讀取數據輸出到操作臺。

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

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

 }
}

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

FileInputStream從文件系統中的某個文件中獲取輸入字節,適用于讀取諸如圖像數據之類的原始數據流。有一下兩種創建方法:

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

下面是如何讀取磁盤文件來創建一個文件輸入流,循環讀取該數據流中的數據并輸數據到控制臺。

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

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

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

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

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 {
   // 創建文件輸入流
   FileInputStream file = new FileInputStream("D:/demo?test.tmp");
   // 創建對象輸入流
   ObjectInputStream object = new ObjectInputStream(file);
   // 讀取對象的數據
   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);
   // 關閉流
   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允許輸入流由字符串內容提供,與ByteArrayInputStream使用字節數組作為輸入源類似,但是只有一種構造方法:

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

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

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

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

5、緩存輸入流——BufferedInputStream

BufferedInputStream為另一個輸入流添加一些功能,即緩存輸入功能。在創建BufferedInputStream時,會創建一個內部緩存區間數組。在讀取或者跳過流中字節時,可根據需要從包含的輸入流在此填充該內部緩存區,一次填充多個字節。

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

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

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 {
   // 創建文件輸入流
   FileInputStream input = new FileInputStream("D:/demo/test.txt");
   BufferedInputStream buffer = new BufferedInputStream(input);
   // 從輸入流中讀取數據
   while (buffer.available() > 0) {
    int out = buffer.read();
    System.out.print((char) out);
   }
   // 關閉流
   buffer.close();
   input.close();
  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }
}

以上就是如何使用InputStream字節流,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巫溪县| 儋州市| 乡城县| 霞浦县| 庆安县| 泸西县| 德阳市| 长治市| 九寨沟县| 黄山市| 尼玛县| 淳安县| 廊坊市| 桃源县| 巴南区| 特克斯县| 新绛县| 沅陵县| 醴陵市| 昭觉县| 永顺县| 永兴县| 上犹县| 建宁县| 阿荣旗| 玉田县| 鄯善县| 洪湖市| 松溪县| 昌都县| 卢龙县| 怀化市| 彰化县| 莱芜市| 类乌齐县| 锡林郭勒盟| 嘉义市| 淮阳县| 普格县| 洱源县| 景宁|