FileReader中使用read(char[] cbuf)读入数据

21 篇文章 0 订阅
package csdn.java3;
/**
*
* 一、流的分类:
* 1.操作数据单位:字节流、字符流
* 2.数据的流向:输入流、输出流
* 3.流的角色:节点流、处理流
*
* 二、流的体系结构
* 抽象基类        节点流(或文件流)                              缓冲流(处理流的一种)
* InputStream     FileInputStream   (read(byte[] buffer))        BufferedInputStream (read(byte[] buffer))
* OutputStream    FileOutputStream  (write(byte[] buffer,0,len)  BufferedOutputStream (write(byte[] buffer,0,len) / flush()
* Reader          FileReader (read(char[] cbuf))                 BufferedReader (read(char[] cbuf) / readLine())
* Writer          FileWriter (write(char[] cbuf,0,len)           BufferedWriter (write(char[] cbuf,0,len) / flush()
*
*
*/

import java.io.*;

import org.junit.Test;

public class FileReaderWriterTest {
	
	
    //对read()操作升级:使用read的重载方法
    @Test
    public void testFileReader1()  {
        FileReader fr = null;
        try {
            //1.File类的实例化
            File file = new File("D:\\eclipse-workspace\\csdn\\src\\csdn\\java3\\hello.txt");

            //2.FileReader流的实例化
            fr = new FileReader(file);

            //3.读入的操作
            //read(char[] cbuf):返回每次读入cbuf数组中的字符的个数。如果达到文件末尾,返回-1
            char[] cbuf = new char[5];
            int len;
            while((len = fr.read(cbuf)) != -1){
                //方式一:
                //错误的写法,难点!
                /*for(int i = 0;i < cbuf.length;i++){
                    System.out.print(cbuf[i]);
                }*/
            	
            	
                //正确的写法
                for(int i = 0;i < len;i++){
                    System.out.print(cbuf[i]);
                }
                
                //-----------------------------------------------------
                //方式二:
                //错误的写法,对应着方式一的错误的写法
                String str = new String(cbuf);
                System.out.print(str);
                
                //正确的写法
                String str1 = new String(cbuf,0,len);
                System.out.print(str1);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(fr != null){
                //4.资源的关闭
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        }

    }
	
	
	
	

}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZHOU_VIP

您的鼓励将是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值