1. 程式人生 > >java輸入輸出24:記憶體輸出流

java輸入輸出24:記憶體輸出流

什麼是記憶體輸出流

該輸出流可以向記憶體中寫資料,把記憶體當作一個緩衝區,寫出之後可以一次性獲取所有資料。

使用方式

1、建立物件:new ByteArrayOutStream()。
2、寫出資料:write(int),write(byte[])。
3、獲取資料:toByteArray()。

注意點

在這裡插入圖片描述
程式碼演示如下:

package zifu;

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

public class Demo14_ByteArrayOutStream {
	public static void main(String[] args) throws IOException {
		FileInputStream fis = new FileInputStream("10.txt");
		ByteArrayOutputStream baos = new ByteArrayOutputStream();//在記憶體中建立了可以增長的記憶體陣列
		//byte[] array = new byte[3];
		int b;
		/*while ((b = fis.read(array)) != -1) {
			System.out.println(new String(array,0,b));
		}*/
		
		while ((b = fis.read()) != -1) {//將讀取到的資料逐個寫到記憶體中
			baos.write(b);
		}
		
		byte[] arr = baos.toByteArray(); //將緩衝區的資料全部獲取出來,並賦值給arr陣列。
		System.out.println(new String(arr));
		fis.close();
	}
}
定義一個檔案輸入流,呼叫read(byte[] b)方法,將a.txt檔案中的內容打印出來(byte陣列大小限制為5)
package zifu;

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

public class Demo15_Test {
	public static void main(String[] args) throws IOException {
		//1,read(byte[] b)是位元組輸入流的方法,建立FileInputStream,關聯a.txt
		FileInputStream fis = new FileInputStream("10.txt");
		//2,建立記憶體輸出流,將讀到的資料寫到記憶體輸出流中
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		//3,建立位元組陣列,長度為5
		byte[] arr = new byte[5];
		int len;
		
		while ((len = fis.read(arr)) != -1) {
			baos.write(arr,0,len);
		}
		
		//4,將記憶體輸出流的資料全部轉換為字串列印
		System.out.println(baos);
		//5,關閉輸入流
		fis.close();
		
		
	}
}

相關推薦

java輸入輸出24記憶體輸出

什麼是記憶體輸出流 該輸出流可以向記憶體中寫資料,把記憶體當作一個緩衝區,寫出之後可以一次性獲取所有資料。 使用方式 1、建立物件:new ByteArrayOutStream()。 2、寫出資料:w

java 輸入給定大小矩陣並輸出

import java.util.Scanner; public class Matrix{ public static void main(String[] args) { Scanner in = new Scanner(System.in); Sys

Java第一次作業規範化輸出、二維陣列排序問題

2. (15分)某省居民電價分三個“階梯”:月用電量50度以內的,電價為0.538元/度;用電量在51度至200度之間的,電價為0.568元/度,用電量超過200度的,電價為0.638元/度。編寫程式,使用者從鍵盤輸入用電量,程式輸出使用者應繳納的電費。 (輸入輸出介面,迴圈)(格式化輸出)

java輸入菱形邊長,輸出菱形

問題描述: 有一個類Rhombus.java,可以通過main函式顯示菱形圖案。     1.通過 Scanner 類來獲取使用者的輸入。     2.需要使用巢狀的For語句,並使用System.out。print()來列印字元。

Java之路記憶體操作

Java提供了記憶體流機制,可以實現類似於記憶體虛擬檔案的功能。 這樣,我們既可以從記憶體中獲取資料,也向記憶體中寫入資料,也就是說,可以將記憶體作為資料的來源和目的地。記憶體操作流就是實現向記憶體中讀取和寫入資料的流類。 記憶體操作流一共也分為兩組: (1)位元

java 輸入一個連結串列,輸出該連結串列中倒數第k個結點。

輸入一個連結串列,輸出該連結串列中倒數第k個結點。 解題思路: 1、當輸入的連結串列為空的時候直接返回空 2、當輸入的k值大於連結串列的節點數的時候直接返回null; 3、先遍歷連結串列得出連結串列的

JAVA 輸入一個浮點,分別輸出整數部分和小數部分

轉載自:http://hi.baidu.com/hgaha163/blog/item/df4c368f7b9f6ceaf11f3607.htmlimport java.util.*; import javax.swing.*; public class Fudianshu

Java虛擬機器6記憶體分配策略

大物件直接進入老年代Java的自動記憶體管理最終可以歸結為自動化地解決了兩個問題: 給物件分配記憶體 回收分配給物件的記憶體      物件的記憶體分配通常是在堆上分配(除此以外還有可能經過JIT編譯後被拆散為標量型別並間接地棧上分配),物件主要分配在新生代的Eden區上

Java虛擬機器7記憶體溢位和記憶體洩露、並行和併發、Minor GC和Full GC、Client模式和Server模式的區別

記憶體溢位和記憶體洩露的區別 1、記憶體溢位 記憶體溢位指的是程式在申請記憶體的時候,沒有足夠大的空間可以分配了。 2、記憶體洩露 記憶體洩露指的是程式在申請記憶體之後,沒有辦法釋放掉已經申請到記憶體,它始終佔用著記憶體,即被分配的物件可達但無用。記憶體洩露一般都是因

java 位元組流入門(記憶體陣列

導讀 上篇文章介紹了兩種常用的檔案輸入輸出流: 其中向檔案中寫入的資料都是預先定義好的位元組陣列 byte[] ,本文介紹另一種在記憶體中維護位元組陣列更常用的方式:記憶體陣列輸入輸出流。 ByteArrayOutputStream 記憶體陣列流

Java效能優化三記憶體管理與垃圾回收機制,開發必備優化技巧!

一、Java 類載入機制的特點: (1)基於父類的委託機制:執行一個程式時,總是由 AppClass Loader (系統類載入器)開始載入指定的類,在載入類時,每個類載入器會將載入任務上交給其父,如果其父找不到,再由自己去載入, Bootstrap Loader (啟動類載入器)是最頂級的類載

Java學習筆記24java 中 valueof 方法的使用

public static String valueOf(boolean b)返回 boolean 引數的字串表示形式。 public static String valueOf(char c)返回 char 引數的字串表示形式。 public static String valueOf(i

Java多執行緒記憶體可見性

Java中對於volatile變數,通俗點說可以把它看做多執行緒之間分享的共享記憶體,可見性是立即的。 實際上它分成了兩部分,volatile write和volatile read。由於Unsafe提供了getXXXVolatile和putXXXVolatile介面。所以

Thinking in java自讀筆記常用輸入輸出

這次總結以用法為主,涉及的深入原理暫不理會 1 繼承於InputStream的常用輸入流 (1). 檔案輸入流FileInputStream (2). 管道輸入流PipedInputStream (3). 緩衝輸入流BufferedInputStream (4). 合併輸入流Se

java輸入輸出10IO(IO概述及其分類)

1 概念 1、IO流用來處理裝置之間的資料傳輸。 2、Java對資料的操作時通過流的方式。 3、Java用於操作流的類都在IO包中。 4、流按流向分為兩種:輸入流,輸出流。 5、流按照操作型別分為兩種:(1)位元組流:位元組流可以操作任何資料,因為在計算機中任何資料都是以位元

Java 知識點整理-17.IO 其他 序列+序列化+反序列化+記憶體輸出+物件操作+列印+標準輸入輸出+鍵盤錄入方式+隨機訪問+資料輸入輸出+Properties

目錄 序列流 記憶體輸出流 記憶體輸出流的面試題 物件操作流ObjectOutputStream 物件操作流ObjectInputStream 物件操作流優化 序列化加上id號 列印流的概述和特點 標準輸入輸出流概述和輸出語句 修改標準輸入輸出流拷貝圖片

java輸入輸出11IO(FileOutputStream)

FileOutputStream(String str)在建立物件的時候沒有這個檔案會建立該檔案,如果有這個檔案就會將其清空。 package filePackage; import java.io.F

java輸入輸出12IO(拷貝圖片)

第1種實現方式 package filePackage; import java.io.FileInputStream; import java.io.FileNotFoundException; im

java輸入輸出13IO(BufferedInputStream和BufferedOutputStream拷貝)

緩衝思想 位元組流一次讀寫一個數組的速度明顯比一次讀寫一個位元組的速度快很多,這是加入了陣列這樣的緩衝區的效果。 BufferedInputStream BufferedInputStream中讀取一個緩衝區(陣列),從BufferedInputStream中讀

java輸入輸出14IO(位元組讀寫中文)

位元組流讀取中文的問題 位元組流在讀中文的時候有可能會讀到半個中文,造成亂碼。 位元組流寫出中文的問題 位元組流直接操作位元組,所以寫出中文必須將字串轉換成位元組陣列。寫出回車換行write("\r\n