Java-IO之流的分类

简介: InputStream 和 Reader 是所有输入流的基类。

InputStream & Reader

  • InputStream 和 Reader 是所有输入流的基类。
  • InputStream(典型实现:FileInputStream)
  • int read()
  • int read(byte[] b)
  • int read(byte[] b, int off, int len)
  • Reader(典型实现:FileReader)
  • int read()
  • int read(char [] c)
  • int read(char [] c, int off, int len)
  • 程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
  • FileInputStream 从文件系统中的某个文件中获得输入字节。FileInputStream 用于读取非文本数据之类的原始字节流。要读取字符流,需要使用 FileReader

InputStream

- nt read()

  • 从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。
  • int read(byte[] b)
  • 从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。否则以整数形式返回实际读取的字节数。
  • int read(byte[] b, int off,int len)
  • 将输入流中最多 len 个数据字节读入 byte 数组。尝试读取 len 个字节,但读取的字节也可能小于该值。以整数形式返回实际读取的字节数。如果因为流位于文件末尾而没有可用的字节,则返回值 -1。
  • public void close() throws IOException关闭此输入流并释放与该流关联的所有系统资源。

read方法

  • 方式一
//1File类的实例化
        File file=new File("hello.txt");
        //FileReader流的实例化
        FileReader fr =new FileReader(file);
        //读入的操作
        //read(char [] c):返回每次读入c数组中的字符的个数。如果达到文件的末尾,返回 -1
        char[]c=new char[5];
        int len;
        while ((len=fr.read(c))!=-1) {
            for (int i=0;i<len;i++){
                System.out.print(c[i]);
            }
        }
        //资源的关闭
        fr.close();
    }
}
  • 方式二
char[] c = new char[5];
int len;
while ((len = fr.read(c)) != -1) {
    String str = new String(c, 0, len);
    System.out.print(str);
}


相关文章
|
7月前
|
Java 数据安全/隐私保护
【零基础学Java】—内部类的概念与分类(三十)
【零基础学Java】—内部类的概念与分类(三十)
|
9月前
|
Java
【Java中锁的分类】
【Java中锁的分类】
|
2月前
|
Java 调度
Java中常见锁的分类及概念分析
Java中常见锁的分类及概念分析
24 0
|
2月前
|
Java 编译器
Java一分钟之——异常分类:检查异常与运行时异常
【5月更文挑战第20天】Java异常处理分为检查异常(Checked Exceptions)和运行时异常(Unchecked Exceptions),两者在编译期处理方式不同。检查异常需捕获或声明,如`IOException`,而运行时异常如`NullPointerException`在运行时终止程序。常见问题包括不恰当的异常使用、过度捕获和忽略异常信息。避免策略包括正确区分异常类型、具体捕获和处理异常信息。示例代码展示了如何处理这两种类型的异常。理解并妥善处理异常能提升程序的健壮性和可维护性。
58 4
|
18天前
|
存储 SQL 安全
Java共享问题 、synchronized 线程安全分析、Monitor、wait/notify以及锁分类
Java共享问题 、synchronized 线程安全分析、Monitor、wait/notify以及锁分类
17 0
|
2月前
|
存储 Java API
【JAVA学习之路 | 进阶篇】IO流及流的分类
【JAVA学习之路 | 进阶篇】IO流及流的分类
|
2月前
|
存储 安全 Java
Java集合的分类有哪些?
Java中的集合就像一个容器,专门用来存储Java对象,这些对象可以是任意的数据类型,并且长度可变。这些集合类都位于java.util包中,在使用时一定要注意导包的问题,否则会出现异常。
53 10
|
2月前
|
Java
【专栏】Java多线程中,锁用于控制共享资源访问,确保数据一致性和正确性,锁是什么意思,有哪些分类?
【4月更文挑战第28天】Java多线程中,锁用于控制共享资源访问,确保数据一致性和正确性。本文探讨锁的概念、作用及分类:乐观锁与悲观锁、自旋锁与适应性自旋锁、公平锁与非公平锁、可重入锁和读写锁。使用锁需注意避免死锁、合理选择锁粒度及性能优化。理解锁有助于提升多线程编程的效率和稳定性。
|
2月前
|
Java
Java自定义状态码和分类
Java自定义状态码和分类
18 0
|
2月前
|
Linux
Linux 终端命令之文件浏览(1) cat
Linux 终端命令之文件浏览(1) cat
39 0
Linux 终端命令之文件浏览(1) cat