簡單的I/O流的讀取與輸入(上)

  I/O流中的字節流的讀取與輸入

(用於讀取寫入二進制文件,如圖片、聲音、影響等類型文件)

1.對於文件的讀取,輸入流InputStream下的子類FileInputStream
有一個read()可以讀取數據,read(byte[])這個方法需要傳入一個參數
這個參數是一個byte型的數組,用於存儲讀取到的數據


2.把byte數組轉化爲string類型的數據方便使用
String str=new String(by)(by是byte型數組的名稱)
讀取完文件後需要關閉輸入流,以免佔用內存空間


3.完整的過程需要用try/catch來包住,以免程序發生錯誤而終止不了
讀取文件代碼示例:

public Static String getMsg(){
	byte msg[]=new byte[100];
	String str=null;
	try{
		InputStream is=new FileInputStream("src/a.txt");
		is.read(msg);
		str=new String(msg);
		is.close();
	}catch(FileNotFoundException e){
		e.printStackTrace();
	}catch(IOException e){
		e.printStackTrace();
	}
	return str;
}



4.對於文件的寫入,OutputStream下的子類FileOutputStream有一個write()
方法寫入數據到指定文件,write()方法需要傳入一個byte[]數組,如果你想
傳入String類型的數據,String類型數據有可以轉化爲byte[]的方法
寫入文件代碼示例:

public Static String putMsg(){
	String msg=getMsg();
	try{
		OutputStream os=new FileOutputStream("src/b.txt",

true);
		os.write(13);
		os.wirte(10);
		//在windows系統下,換行符用ASCII碼錶示是13 10,這裏是

換行的意思
		os.write(msg.getBytes());
		//把String類型數據轉化爲byte[]數組
		os.flush();
		//刷新輸出流
		os.close();
	}catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
}
5.上面是對於文本類型文件的讀取與寫入,但是圖片、聲音、影響文件不會把讀取的數據轉爲String類型數據,而是直接用byte數組來存儲數據,然後全寫入另一個文件,相當於複製粘貼一個文件,這裏需要注意的是讀取與寫入的文
件類型要一致,即文件的後綴名需要一致。
代碼示例演示覆制粘貼並打開聲音文件:
public static void get(){
	try{
		InputStream is=new FileInputStream("E:\音樂\金娜英 - 

說出心聲.mp3");
		OutputStream os=new FileInputStream("E:\Youku Files

\mymusic.mp3");
		byte music[]=new byte[1024*10];
		int len=0;
		while((len=is.read(music))!=-1){
			os.write(music);
		}
		is.close();
		os.close();
	}catch (FileNotFoundException e) {
		e.printStackTrace();
	} catch (IOException e) {
		e.printStackTrace();
	}
	String cmd="cmd /c\"文件路徑.mp3\"";
	Runtime run=Runtime.getRuntime();
	try{
		run.exec(cmd);
	}catch (IOException e) {
		e.printStackTrace();
	}
	//打開文件
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章