1. 程式人生 > >IO流_FileInputStream讀取資料一次一個位元組陣列

IO流_FileInputStream讀取資料一次一個位元組陣列

package cn.itcast_02;

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

/*
 * 一次讀取一個位元組陣列: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[5];
		// int len = fis.read(bys);
		// System.out.println(len);
		// System.out.println(new String(bys, 0, len));
		//
		// // 第二次讀取
		// len = fis.read(bys);
		// System.out.println(len);
		// System.out.println(new String(bys, 0, len));
		//
		// // 第三次讀取
		// len = fis.read(bys);
		// System.out.println(len);
		// System.out.println(new String(bys, 0, len));
		//
		// // 第四次讀取
		// len = fis.read(bys);
		// System.out.println(len);
		// System.out.println(new String(bys, 0, len));
		// // 程式碼重複了,用迴圈改進
		// // 但是我不知道迴圈條件
		// len = fis.read(bys);
		// System.err.println(len);
		// len = fis.read(bys);
		// System.err.println(len);
		// 如果讀取到的實際資料是-1,就說明沒有資料了

		// byte[] bys = new byte[115];
		// int len = 0;
		// while ((len = fis.read(bys)) != -1) {
		// System.out.print(new String(bys, 0, len));
		// // System.out.println(new String(bys));//千萬要帶上len的使用
		// }

		// 最終程式碼版
		// 陣列的長度一般是1024或者1024的整倍數
		byte[] bys = new byte[1024];
		int len = 0;
		while ((len = fis.read(bys)) != -1) {
			System.out.print(new String(bys, 0, len));
		}

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