自学内容网 自学内容网

Java 基础教学:Java 高级特性与实战-输入输出流

Java I/O(输入输出)流是用于处理输入和输出的类的集合,它们在java.io包中。I/O流分为两大类:字节流(用于处理原始二进制数据)和字符流(用于处理文本数据)。

字节流与字符流的区别

字节流

  • 字节流以8位字节为单位进行输入和输出,是所有类型数据(包括文本文件、音频、视频等)的通用流类。
  • 字节流主要用于处理非文本数据,如二进制文件和对象序列化等。
  • java.io包中,InputStreamOutputStream是所有字节流类的基类。

字符流

  • 字符流以16位Unicode字符为单位进行输入和输出,专门用于处理文本数据。
  • 字符流自动处理字符编码问题,可以避免在字节和字符之间转换时出现的字符集错误。
  • java.io包中,ReaderWriter是所有字符流类的基类。

文件的读写操作

文件读取

字节流读取

使用FileInputStream可以读取文件的字节数据。

import java.io.FileInputStream;
import java.io.IOException;

public class ByteStreamReadExample {
    public static void main(String[] args) {
        try (FileInputStream fis = new FileInputStream("example.txt")) {
            int i;
            while ((i = fis.read()) != -1) { // 读取文件内容到达文件末尾时返回-1
                System.out.print((char) i);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
字符流读取

使用FileReader可以读取文件的字符数据。

import java.io.FileReader;
import java.io.IOException;

public class CharStreamReadExample {
    public static void main(String[] args) {
        try (FileReader fr = new FileReader("example.txt")) {
            int i;
            while ((i = fr.read()) != -1) { // 读取文件内容到达文件末尾时返回-1
                System.out.print((char) i);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

文件写入

字节流写入

使用FileOutputStream可以写入字节数据到文件。

import java.io.FileOutputStream;
import java.io.IOException;

public class ByteStreamWriteExample {
    public static void main(String[] args) {
        String data = "Hello, World!";
        try (FileOutputStream fos = new FileOutputStream("example.txt")) {
            fos.write(data.getBytes()); // 将字符串转换为字节数据并写入
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
字符流写入

使用FileWriter可以写入字符数据到文件。

import java.io.FileWriter;
import java.io.IOException;

public class CharStreamWriteExample {
    public static void main(String[] args) {
        String data = "Hello, World!";
        try (FileWriter fw = new FileWriter("example.txt")) {
            fw.write(data); // 直接写入字符串
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结

字节流和字符流是Java I/O流的两种基本形式,它们分别以字节和字符为单位进行数据的读取和写入。字节流主要用于处理原始二进制数据,而字符流主要用于处理文本数据。在进行文件读写操作时,应根据数据的类型选择合适的流类。正确地使用I/O流可以帮助我们高效地进行数据的输入和输出操作。


原文地址:https://blog.csdn.net/ZTAHNG/article/details/143597989

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!