1. 程式人生 > >位元組流中byte[]的作用

位元組流中byte[]的作用

/*
 * 位元組輸出流操作步驟:
 * A:建立位元組輸出流物件
 * B:呼叫write()方法
 * C:釋放資源
 * 
 * public void write(int b):寫一個位元組
 * public void write(byte[] b):寫一個位元組陣列
 * public void write(byte[] b,int off,int len):寫一個位元組陣列的一部分
 */
public class FileOutputStreamDemo2 {
	public static void main(String[] args) throws IOException {
		// 建立位元組輸出流物件
		// OutputStream os = new FileOutputStream("fos2.txt"); // 多型
		FileOutputStream fos = new FileOutputStream("fos2.txt");

		// 呼叫write()方法
		//fos.write(97); //97 -- 底層二進位制資料	-- 通過記事本開啟 -- 找97對應的字元值 -- a
		// fos.write(57);
		// fos.write(55);
		
		//public void write(byte[] b):寫一個位元組陣列
		byte[] bys={97,98,99,100,101};
		fos.write(bys);
		
		//public void write(byte[] b,int off,int len):寫一個位元組陣列的一部分
		fos.write(bys,1,3);
		
		//釋放資源
		fos.close();
	}
}

byte[]在位元組流中的作用1

作為容器,通過fos.write(byte)寫入資料,如寫入整形,會在輸出時轉換成對應的位元組 97-->a  48-->0  65-->A

 

/*
 * 一次讀取一個位元組陣列:int read(byte[] b)
 * 返回值其實是實際讀取的位元組個數。
 */
public class FileInputStreamDemo2 {
	public static void main(String[] args) throws IOException {
		// 建立位元組輸入流物件
		// FileInputStream fis = new FileInputStream("fis2.txt");
		FileInputStream fis = new FileInputStream("FileOutputStreamDemo.java");

		
		byte[] bys = new byte[1024];
		int len = 0;
		while ((len = fis.read(bys)) != -1) {
			System.out.print(new String(bys, 0, len));
		}

		// 釋放資源
		fis.close();
	}
}

byte[]在位元組流中的作用2

通過作為容器的特點,進階成緩衝區作用.

len = fis.read(bys)   包含兩個動作:1.代表每次最多從目標檔案中讀取1024個位元組. 2.返回每次讀取多少個位元組長度(由於read(bys)向bys寫入的資料是覆蓋的,並不是替換,所以必須要返回位元組長度,避免輸出以外的位元組)

fis.read(bys) !=-1  表示當讀取的目標檔案到末尾了,沒有剩餘的位元組了,就會返回-1,通過是否等於-1的判斷,繼續是否讀取.

new String(bys,0,len) 表示每次把bys裡面的資料,從0到len的長度讀取出去,len控制了每次bys能讀取到的位元組長度,避免bys覆蓋造成的錯誤
.通過構造方法轉換成字串輸出