浅谈Java之文件流

一、基本介绍

        文件流是用于从文件读取数据或向文件写入数据的流(Stream)。Java提供了多种文件流类,它们都继承自java.io包中的InputStreamOutputStream类。

二、常用的文件流类

1、FileInputStream:用于从文件中读取数据的输入流。

2、FileOutputStream:用于向文件中写入数据的输出流。

3、BufferedInputStreamBufferedOutputStream:提供缓冲的输入输出流,可以提高读写效率。

4、DataInputStreamDataOutputStream:提供方法读取和写入Java基本数据类型。

5、ObjectInputStreamObjectOutputStream:用于对象的序列化和反序列化。

6、PrintWriter:用于写入字符文本到文件。

7、FileReaderFileWriter:用于读写字符文件。

三、示例代码

使用 FileInputStream 和 FileOutputStream 读取和写入文件

// 写入文件
try (FileOutputStream fos = new FileOutputStream("example.txt")) {
    String content = "Hello, World!";
    fos.write(content.getBytes());
} catch (IOException e) {
    e.printStackTrace();
}

// 读取文件
try (FileInputStream fis = new FileInputStream("example.txt")) {
    int content;
    while ((content = fis.read()) != -1) {
        System.out.print((char) content);
    }
} catch (IOException e) {
    e.printStackTrace();
}

使用 BufferedInputStream 和 BufferedOutputStream 提高效率

// 写入文件
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("example.txt"))) {
    String content = "Hello, World!";
    bos.write(content.getBytes());
} catch (IOException e) {
    e.printStackTrace();
}

// 读取文件
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("example.txt"))) {
    int content;
    while ((content = bis.read()) != -1) {
        System.out.print((char) content);
    }
} catch (IOException e) {
    e.printStackTrace();
}

使用 DataInputStream 和 DataOutputStream 读写基本数据类型

// 写入文件
try (DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream("example.dat")))) {
    dos.writeInt(123);
    dos.writeDouble(456.789);
} catch (IOException e) {
    e.printStackTrace();
}

// 读取文件
try (DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("example.dat")))) {
    int i = dis.readInt();
    double d = dis.readDouble();
    System.out.println("Int: " + i + ", Double: " + d);
} catch (IOException e) {
    e.printStackTrace();
}

使用 PrintWriter 写入文本文件

// 写入文本文件
try (PrintWriter pw = new PrintWriter("example.txt")) {
    pw.println("Hello, World!");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

使用 FileReader 和 FileWriter 读写字符文件

// 写入文本文件
try (FileWriter fw = new FileWriter("example.txt")) {
    fw.write("Hello, World!");
} catch (IOException e) {
    e.printStackTrace();
}

// 读取文本文件
try (FileReader fr = new FileReader("example.txt");
     BufferedReader br = new BufferedReader(fr)) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

四、注意事项

在Java中,使用try-with-resources语句可以自动关闭资源,这是处理流时的一个好习惯,因为它可以防止资源泄露。如果你有具体的文件流操作需求或者遇到了问题,可以提供更多的细节,我会尽力帮助你。

上一篇:【go从零单排】Atomic Counters原子计数-????概念