Java字节流和字符流

Java I/O操作的步骤

1、使用File类打开一个文件。

2、通过字节流或字符流的子类指定输出位置。

3、进行读/写操作。

4、关闭输入/输出。

字节流

InputStream、OutputStream,子类如上图所示。

InputStream没有readLine()方法,不能读取一行。

使用字节流时,不调用close()方法也可以输出。

public class Demo {
	
	public static void main(String[] args) throws IOException {
    	//字节流输出到文件
    	File file = new File("D:/workspace/text.txt");
    	OutputStream out = new FileOutputStream(file);
    	String str = "Hello World!";
    	byte[] b = str.getBytes();
    	out.write(b);
	}
	
}

字符流

Reader、Writer,子类如上图所示。

BufferedReader有readLine()方法,可以读取一整行。

使用字符流时,要调用close()方法完成输出,如果不使用close()方法,可以用flush()方法清除缓冲区,也可以完成输出。

public class Main {
	
    public static void main(String[] args) throws IOException {
	//	字符流输出到文件
    	File file = new File("D:/workspace/text.txt");
    	Writer out = new FileWriter(file);
    	String str = "hello java";
    	out.write(str);
    	out.close();
	//	out.flush(); // 强制清空缓冲区,这样就可以在没有close的情况下输出到文件
    }
    
}

字节流转字符流--InputStreamReader

字符流转字节流--OutputStreamWriter

public class Demo {
	
	public static void main(String[] args) throws IOException {
		// 读取文件
    	BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/workspace/text.txt")));
    	// 输出到另一个文件
    	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:/workspace/ceshi.txt")));
    	
    	String str = null;
    	while((str = br.readLine()) != null) {
    		bw.write(str); // 输出
    		bw.newLine(); // 换行
    		bw.flush(); // 清空缓冲区,才能输出
    	}
    	
    	br.close();
	}
	
}

说明

1、比较常用的形式如下一行:

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:/workspace/text.txt")));

上面这一行相当于下面这几行:

File file = new File("D:/workspace/text.txt"); // 打开一个文件
FileInputStream fis = new FileInputStream(file); // 读取字节流
InputStreamReader isr = new InputStreamReader(fis); // 字节流转换成字符流
BufferedReader br = new BufferedReader(isr); // 字符流转换成字符缓冲输入流

2、将字符流转换成字符缓冲输入流,是因为在缓冲区里面读取数据比较快,提高效率。

3、从键盘读入,一般输出:

public class Main {
	
    public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    	
    	String str = null;
    	
    	while((str = br.readLine()) != null) {
    		bw.write(str);
    		bw.newLine();
    		bw.flush();
    	}
    	
    	br.close();
    }
    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值