JAVA IO——常用的类

简介: JAVA IO——常用的类

InputStream:字节输入流

InputStream抽象类是所有类字节输入流的超类

InputStream常用的子类

  1. FileInputStream:文件输入流
  2. BufferedInputStream:缓冲字节输入流
  3. objectInputStream:对象字节输入流

a0a69b7e8689403383ada831a5714977.png

65ff2c139e8346dea3eeeafa9e949ac9.png


我们先在e盘创建hello.txt 里面写hello,world

我们先按字符流读入文件

  @Test
    public  void readFile01(){
        String  filePath="e:\\hello.txt";
        int readData=0;
    java.io.FileInputStream fileInputStream=null;
    try {
         fileInputStream = new java.io.FileInputStream(filePath);
        while ((readData=fileInputStream.read())!=-1){从该输入流读取一个字节的数据。 如果没有输入可用,此方法将阻止。
            System.out.print((char) readData);
        }
    }  catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            //关闭文件流 释放资源
            fileInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

f43ee8ab70864a84bd1e97aa964c003d.png

如果我们往二进制里写文字的话 就会出现乱码

42b71a7d362d400d97f6ddfe6792a01c.png

1c39bd9fcf6e43b8b2faefb89ad27d5c.png

所以如果是文本文件最好用字符流来~

接下来 小王同学要用read(byt [] b)来读取文本

   @Test
    public  void readFile02(){
        String  filePath="e:\\hello.txt";
        int readData=0;
        //字符数组
        byte [] buf=new byte[8]; //一次读取8个字节
        java.io.FileInputStream fileInputStream=null;
        try {
            fileInputStream = new java.io.FileInputStream(filePath);
            while ((readData=fileInputStream.read(buf))!=-1){
                //从该输入流读取最多b.length字节的数据到字节数组。 此方法将阻塞,直到某些输入可用。
                //如果返回-1表示读取完毕
                //如果读取正常,返回实际读取的字节数
                System.out.print(new String(buf,0,readData)); //转成字符显示
            }
        }  catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                //关闭文件流 释放资源
                fileInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

60cf5a9e9d18400ebf0b3ef36e6a5639.png

这种是一次性读取8个字节 我们可以debug看看

8b341411ea094111aee8c577eceade67.png

果然是一次性8个字节~

03ffd815ef854eda91df2fdf8f292045.png

如果readData=-1就表示读取完毕

相关文章
|
11天前
|
Java
java的类详解
在 Java 中,类是面向对象编程的核心概念,用于定义具有相似特性和行为的对象模板。以下是类的关键特性:唯一且遵循命名规则的类名;描述对象状态的私有属性;描述对象行为的方法,包括实例方法和静态方法;用于初始化对象的构造方法;通过封装保护内部属性;通过继承扩展其他类的功能;以及通过多态增强代码灵活性。下面是一个简单的 `Person` 类示例,展示了属性、构造方法、getter 和 setter 方法及行为方法的使用。
|
7天前
|
Java 编译器
Java——类与对象(继承和多态)
本文介绍了面向对象编程中的继承概念,包括如何避免重复代码、构造方法的调用规则、成员变量的访问以及权限修饰符的使用。文中详细解释了继承与组合的区别,并探讨了多态的概念,包括向上转型、向下转型和方法的重写。此外,还讨论了静态绑定和动态绑定的区别,以及多态带来的优势和弊端。
20 9
Java——类与对象(继承和多态)
|
7天前
|
SQL Java 编译器
Java——类与对象(封装)
封装是面向对象编程中的概念,指将数据(属性)和相关操作(方法)组合成独立单元(类),使外部无法直接访问对象的内部状态,只能通过提供的方法进行交互,从而保护数据安全。例如,手机将各种组件封装起来,只暴露必要的接口供外部使用。实现封装时,使用`private`关键字修饰成员变量,并提供`get`和`set`方法进行访问和修改。此外,介绍了包的概念、导入包的方式及其注意事项,以及`static`关键字的使用,包括静态变量和方法的初始化与代码块的加载顺序。
18 10
Java——类与对象(封装)
|
7天前
|
Java C语言
Java——类与对象
这段内容介绍了Java中的类和对象、`this`关键字及构造方法的基本概念。类是对现实世界事物的抽象描述,包含属性和方法;对象是类的实例,通过`new`关键字创建。`this`关键字用于区分成员变量和局部变量,构造方法用于初始化对象。此外,还介绍了标准JavaBean的要求和生成方法。
18 9
Java——类与对象
|
7天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
6天前
|
存储 安全 Java
Java——String类详解
String 是 Java 中的一个类,用于表示字符串,属于引用数据类型。字符串可以通过多种方式定义,如直接赋值、创建对象、传入 char 或 byte 类型数组。直接赋值会将字符串存储在串池中,复用相同的字符串以节省内存。String 类提供了丰富的方法,如比较(equals() 和 compareTo())、查找(charAt() 和 indexOf())、转换(valueOf() 和 format())、拆分(split())和截取(substring())。此外,还介绍了 StringBuilder 和 StringJoiner 类,前者用于高效拼接字符串,后者用于按指定格式拼接字符串
11 1
Java——String类详解
|
8天前
|
存储 Java
Java的对象和类的相同之处和不同之处
在 Java 中,对象和类是面向对象编程的核心。
|
2天前
|
安全 Java
Java StringBuffer 和 StringBuilder 类详解
在 Java 中,`StringBuffer` 和 `StringBuilder` 用于操作可变字符串,支持拼接、插入、删除等功能。两者的主要区别在于线程安全性和性能:`StringBuffer` 线程安全但较慢,适用于多线程环境;`StringBuilder` 非线程安全但更快,适合单线程环境。选择合适的类取决于具体的应用场景和性能需求。通常,在不需要线程安全的情况下,推荐使用 `StringBuilder` 以获得更好的性能。
|
2天前
|
Java 开发者
Java Character 类详解
Java中的`Character`类是`java.lang`包的一部分,用于将基本类型`char`封装为对象,并提供了丰富的静态方法来处理字符,如类型判断、大小写转换等。
|
2天前
|
Java 索引
Java String 类详解
Java 中的 `String` 类用于表示不可变的字符序列,是 Java 标准库 `java.lang` 包的一部分。字符串对象一旦创建,其内容不可更改,修改会生成新对象。