1. 程式人生 > >File類的基本操作之InputStream位元組輸入流

File類的基本操作之InputStream位元組輸入流

話不多少。我直接把程式碼貼上來了。有什麼問題請給我留言

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

/**
 * 位元組輸出流:OutputStream。整個IO包中位元組輸出流的最大父類
 * 位元組輸入流:InputStream
 * 
 * InputStream使用子類FileInputStream。讀取
 */
public class InStream1 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception{
		// TODO Auto-generated method stub
		//第1步:使用File類找到一個檔案
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通過子類例項化父類物件
		InputStream in = null;
		in = new FileInputStream(file);//通過物件多型性,進行例項化
		//3.讀
		byte[] b = new byte[1024];
		in.read(b);
		//4.關閉
		in.close();
		System.out.println(new String(b));//變成字串輸出
		
		//遺留問題:留了很多空格。沒有那麼大,開了1024空間,沒有內容的為空
	}

}

上一個程式的遺留問題:

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//解決遺留問題
public class InStream2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//第1步:使用File類找到一個檔案
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通過子類例項化父類物件
		InputStream in = null;
		in = new FileInputStream(file);//通過物件多型性。進行例項化
		//3.讀
		byte[] b = new byte[1024];
		
		int len = in.read(b);//讀取內容
		//4.關閉
		in.close();
		
		//解決遺留問題。看String提供的方法
		System.err.println("讀入資料的長度:" + len);
		System.out.println(new String(b,0,len));//變成字串輸出
		
		//能不能依據檔案大小來開闢空間呢? 
	}

}

解決依據檔案大小來開闢空間

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//解決依據檔案大小來開闢空間
public class InStream3 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		//第1步:使用File類找到一個檔案
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通過子類例項化父類物件
		InputStream in = null;
		in = new FileInputStream(file);//通過物件多型性,進行例項化
		//3.讀
		byte[] b = new byte[(int) file.length()];  //解決依據檔案大小來開闢空間
		
		int len = in.read(b);//讀取內容
		//4.關閉
		in.close();
		
		//解決遺留問題,看String提供的方法
		System.err.println("讀入資料的長度:" + len);
		System.out.println(new String(b));//變成字串輸出
	}

}

僅僅適合知道檔案大小的輸入

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//僅僅適合知道檔案大小的輸入
public class InStream4 {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception{
		// TODO Auto-generated method stub
		//第1步:使用File類找到一個檔案
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通過子類例項化父類物件
		InputStream in = null;
		in = new FileInputStream(file);//通過物件多型性,進行例項化
		//3.讀
		byte[] b = new byte[(int) file.length()];  //解決依據檔案大小來開闢空間
		for (int i = 0; i < b.length; i++) {
			b[i] = (byte) in.read();
		}
//		int len = in.read(b);//讀取內容
		//4.關閉
		in.close();
		
		//解決遺留問題。看String提供的方法
		System.out.println(new String(b));//變成字串輸出
	}

}

當不知道讀取內容有多大的時候。就僅僅能以讀取的資料是否為-1為讀完的標誌

package org.mark.streamRW;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

//當不知道讀取內容有多大的時候,就僅僅能以讀取的資料是否為-1為讀完的標誌
public class InStream5 {

	/**
	 * @param args
	 */
	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		//第1步:使用File類找到一個檔案
		File file = new File("d:" +File.separator +"test.txt");
		//第2步:通過子類例項化父類物件
		InputStream in = null;
		in = new FileInputStream(file);//通過物件多型性。進行例項化
		//3.讀
		byte[] b = new byte[1024];  //解決依據檔案大小來開闢空間
		int len = 0;
		int temp = 0;//接受每一個讀取進來的資料
		while ((temp = in.read())!= -1) {
			//表示還有內容,檔案沒有讀完
			b[len] = (byte) temp;
			len++ ;
		}
		//4.關閉
		in.close();
		
		//解決遺留問題,看String提供的方法
		System.out.println(new String(b,0,len));//變成字串輸出
	}

}


貼的太快了~幾乎吧程式關了~