java.io.file學習記錄(三)輸入輸出流

IO流(輸入輸出流)
字節流    字符流
1.字節流
1)InputStream 抽象了應用程序讀取數據的方式
	OutputStream 抽象了應用程序寫數據的方式
2)EOF = End 讀到-1表示讀到文件結尾
3)輸入流的基本方法
	int b = in.read();讀取一個字節無符號填充到低八位(b==-1)表示文件結尾
	in.read(byte[] buf) 從輸入流讀取數據填充到字節數組buf
	in.read(byte[] buf,int start,int size) 從輸入流讀取數據到字節數組buf,從buf的start位置開始存放size長度的數據
4)輸出流基本方法
	out.write(int b)寫一個byte到流,b的低八位
	out.read(byte[] buf) 將buf字節數據寫入到流
	out.read(byte[] buf,int start,int size) 字節數組buf從start位置開始寫size長度的字節到流
5)FileInputStream 實現了在文件上讀取數據
6)FileOutputStream 實現了向文件中寫byte數據的方法
7)DataOutputStream/DataInputStream
 	對"流"功能的擴展,可以更加方便的讀取/寫入int 、double 、long字符類型的數據
 	writeInt()/writeDouble()/writeUTF()
 8)BufferedInputStream/BufferedOutStream
 這兩個流類爲IO提供了帶緩衝區的操作,一般打開文件進行寫入或讀取操作時,都會加上緩衝,提高了IO的性能
 從應用程序中把輸入放入文件,相當於將一缸水倒入另個的缸中;
 FileOutStream--->write()方法相當於一滴一滴的把水轉移過去
 DataOutStream--->write()方法相當於一瓢一瓢把水轉移過去
 BufferedOutputStream--->write()相當於一瓢一瓢先放入桶中,再從桶中倒入缸中
實現文件複製功能

	public static void copyFileByBuffer(File src,File dest) throws IOException{
		if(!src.exists()) {
			throw new IllegalArgumentException("文件"+src+"不存在");
		}
		if(!src.isFile()) {
			throw new IllegalArgumentException(src+"不是文件");
		}
		
		BufferedInputStream bis = new BufferedInputStream(
				new FileInputStream(src));
		BufferedOutputStream bos = new BufferedOutputStream(
				new FileOutputStream(dest));
		int c;
		while((c=bis.read())!=-1) {
			bos.write(c);
			bos.flush();
		}
		System.out.println("success!");
		bis.close();
		bos.close();
	}
	 

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