Java IO流

一、字符流和字节流

Java中的IO流分为字节流和字符流,二者的区别是操纵对象的不同,字节流面向字节,每次操作一个字节,操作对象是字节或者字节数组,而Java用Unicode编码存储字符,一个字符=两个字节,用字节流操作效率不高,且容易出错。字符流就是用来处理字符对象(字符数组或者字符串),一次处理2个字节。字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换。字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高。 

使用情况:一般用字符流来处理文本数据,而用字节流来处理二进制数据(照片、图像等)。

二、IO的体系结构


三、利用IO读写文件

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class NormalRW {

	public static void main(String[] args) {
		BufferedWriter bw = null;
		BufferedReader br = null;
		BufferedInputStream bi = null;
		BufferedOutputStream bo = null;
		
		try {
			System.out.println("---------write begin ---------");
			bw =  new BufferedWriter(new FileWriter(new File("e:\\t.txt")));
			bw.write("Hello World!!!\r\n");
			bw.write("你好,世界!!!");
			bw.flush();
			bw.close();
			System.out.println("--------- write end ---------");
			
			System.out.println("--------- read begin ---------");
			br = new BufferedReader(new FileReader("e:\\t.txt"));
			char[] buffer = new char[16];
			String str = "";
			int n;
			while((n=br.read(buffer)) != -1){
				str += new String(buffer, 0, n);
			}
			System.out.println(str);
			System.out.println("--------- read end ---------");
			
			
			System.out.println("--------- copy picture start ---------");
			
			bi = new BufferedInputStream(new FileInputStream("e:\\animal.jpg"));
			bo = new BufferedOutputStream(new FileOutputStream("e:\\temp.jpg"));
			byte[] buff = new byte[16];
			int i;
			while((i=bi.read(buff)) != -1){
				bo.write(buff, 0, i);
			}
			bo.flush();
			bo.close();
			
			System.out.println("--------- copy picture end ---------");
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值