java文件IO流复习

明确几个基本概念:

1.字符流和字节流,自己以前根本没这个概念,对什么都是InputStream、OutputStream,今天重学IO,才发现还有Reader、Writer。基础不牢靠啊。

   InputStream、OutputStream是针对字节(byte)流进行操作,Reader、Writer是针对字符(char)流进行操作。而且都是抽象类。针对字节流,常用的

 有 FileInputSteam、FileOutputStream。针对字符流,有FileReader、FileWriter。

       2.节点流和包装流:节点流是直接和文件打交道的,其他的都是包装流。上面提到的都是节点流。

       3.常见包装流:

InputStreamReader  从字节到字符

OutputStreamWriter 从字符到字节

BufferedReader

BufferedWriter

     4.千万不要忘记关闭流,千万。。

  

     5.代码如下:

package com.study.io;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;

public class CopyFileTest {

	/**
	 * FileReader、FileWriter只能用来读写文本文件,
	 * FileInputStream、FileOutputStream读写文本文件。
	 * 而读取二进制文件,只能使用FileInputStream、FileOutputStream。
	 */
	public static void main(String[] args) throws Exception {

		
		InputStream is = new FileInputStream("menu.txt"); //文件在根目录下,不是src
		InputStreamReader isr = new InputStreamReader(is);//字节转字符
		BufferedReader br = new BufferedReader(isr);
		
		OutputStream os = new FileOutputStream("menu2.txt");
		OutputStreamWriter osw = new OutputStreamWriter(os);//字符转字节
		BufferedWriter bw = new BufferedWriter(osw);
		
		int length = 0;
		char[] buffer = new char[1024];
		while((length = br.read(buffer)) != -1){
			bw.write(buffer, 0, length);
		}
		
		br.close();
		isr.close();
		is.close();
		
		bw.close();
		osw.close();
		os.close();
		
		Reader reader = new FileReader("menu.txt");//只能读取文本文件
		br = new BufferedReader(reader);
		
		Writer writer = new FileWriter("munu3.txt");//只能写文本文件
		bw = new BufferedWriter(writer);
		
		length = 0;
		buffer = new char[1024];
		while((length = br.read(buffer)) != -1){
			bw.write(buffer, 0, length);
		}
		
		br.close();
		bw.close();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值