InputStream和Reader输入流

IO流04_InputStream和Reader输入流

原处:https://www.cnblogs.com/HigginCui/p/5924282.html

【输入流中的字符流和字节流】

【InputStream和Reader】

InputStream和Reader是所有输入流的抽象基类,本身不能实例化,但是他们是所有输入流的模板。

[ InputStream包含的方法 ]

int read()       从输入流中读去单个字节,返回读取的字节数。(字节类型转换成int类型)

int read( byte[] b )     从输入流中最多读取b.length个字节的数据,将数据存储在字节数组b中,返回读取的字节数。

int read( byte[] b, int off, int len )   从输入流中最多读取len个字节的数据,并将其存储在字节数组b中,并不是从数组起点开始,而是从off位置开始,返回读取的字节数。

[ Reader包含的方法 ]

int read()       从输入流中读去单个字符,返回读取的字符数。(字符类型转换成int类型)

int read( char[] c )     从输入流中最多读取c.length个字符的数据,将数据存储在字符数组c中,返回读取的字符数。

int read( char[] c, int off, int len )   从输入流中最多读取len个字符的数据,并将其存储在字符数组c中,并不是从数组起点开始,而是从off位置开始,返回读取的字符数。

【测试1:FileInputStream读取文件中的数据,并打印到控制台】

复制代码

package com.Higgin.part3;
import java.io.FileInputStream;

public class FileInputStreamDemo {
    
    public static void main(String[] args) throws Exception {
        FileInputStream fis=new FileInputStream("c://testJavaIO/aaa.java"); //创建字节输入流
        byte[] bbuf=new byte[1024];  //创建一个字节长度为1024的缓存,即"竹筒"
        int hasRead=0;  //用于保存每次实际读取的字节数
        int i=0;
        while((hasRead=fis.read(bbuf))>0){  //如果取得数据为-1或0,说明上一次已经取完所有数据
            System.out.println(new String(bbuf,0,hasRead));
            System.out.println("i------"+i);
            i++;
        }
        fis.close();//关闭文件输入流
    }
}

复制代码

【想要提取的文件中的内容】

【运行结果】

【将上面代码中的缓存数组的长度修改为80,即改为" byte[] bbuf=new byte[80]; "后的运行结果】

【测试2:FileReader读取文件中的数据,并打印到控制台】

复制代码

package com.Higgin.part3;
import java.io.FileReader;
import java.io.IOException;

public class FileReadDemo {
    public static void main(String[] args) throws IOException {
        FileReader fr=new FileReader("c://testJavaIO/aaa.java");
        char[] cbuf=new char[1024];  //创建一个字符长度为32的缓存,即"竹筒"
        int hasRead=0;  //用于保存实际读取的字符数
        int i=0;
        while((hasRead=fr.read(cbuf))>0){
            System.out.println(new String(cbuf,0,hasRead)); //每次取得缓存中的字符数组cbuf,将字符数组转化成字符串输出
            System.out.println("i------"+i);
            i++;
        }
        fr.close();
    }
}

复制代码

【运行结果】

 

猜你喜欢

转载自blog.csdn.net/SecondDream_1017/article/details/81631124
今日推荐