码迷,mamicode.com
首页 > 编程语言 > 详细

Java InputStream和Reader

时间:2017-09-26 17:54:46      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:有一个   otf   实现   功能   void   一个   print   rac   trace   

1. 字节流和字符流的区别:

  字节流操作的数据单元是8位的字节,而字符流操作的数据单元是16位的字符。

2. 节点流和处理流的区别:

  可以从/向一个特定的IO设备(如磁盘、网络)读、写数据的流,称为节点流,也被称为低级流。

  处理流则用于对一个已经存在的流进行连接或封装,通过封装后的流实现数据读写功能。

3. InputStream 和 Reader

  InputStream 和 Reader 是所有输入流的抽象基类,本身不能创建实例或执行输入,但成为所有输入流的模板,它们的方法是所有输入流都可使用的方法。

  InputStream包含如下方法:

//从输入流种读取单个字节,返回所读取的字节数据
int read();    
//从输入流种最多读取b.length个字节的数据,并存储在字节数组b种,返回实际读取的字节数
int read(byte b[]);
//从输入流中最多读取len个字符的数据,并将其存储在字符数组buff中,并不是从数组起点开始,而是从off位置开始
int read(byte b[], int off, int len)

  Reader包含如下方法:

//从输入流中读取单个字符,返回所读取的字符数据
int read();
//从输入流中最多读取cbuf.length个字符数据,并存储在cbuf中,返回实际读取的字符数
int read(char cbuf[]);
//从输入流中最多读取cbuf.length个字符数据,并存储在cbuf中,从off开始存储,返回实际读取的字符数
int read(char cbuf[], int off, int len);

  InputStream和Reader是抽象基类,本身不能创建实例,但它们分别有一个用于读取文件的输入流: FileInputStream, FileReader

public class FileInputStreamTest {
    public static void main(String[] args) {
        InputStream fis = null;
        try {
            fis = new FileInputStream("D:/rding/testfile2/file.txt");
            byte[] bbuf = new byte[1024];
            int hasRead = 0;
            while ((hasRead = fis.read(bbuf)) > 0) {
                System.out.println(new String(bbuf, 0, hasRead));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fis != null) {
                    fis.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
public class FileReaderTest {
    public static void main(String[] args) {
        Reader fr = null;
        try {
            fr = new FileReader("D:/rding/testfile2/file.txt");
            char[] cbuf = new char[32];
            int hasRead = 0;
            while ((hasRead = fr.read(cbuf)) > 0) {
                System.out.print(new String(cbuf, 0, hasRead));
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fr != null) {
                try {
                    fr.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

 

  

    

    

  

Java InputStream和Reader

标签:有一个   otf   实现   功能   void   一个   print   rac   trace   

原文地址:http://www.cnblogs.com/lfdingye/p/7597622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!