首页  >  文章  >  Java  >  使用 Java Streams 进行文件输入/输出的技巧

使用 Java Streams 进行文件输入/输出的技巧

PHPz
PHPz原创
2024-07-21 15:06:38859浏览

什么是 Java 输入/输出?

Java 输入/输出(I/O)用于处理输入并生成文件形式的输出。 Java 使用流的概念,可以实现快速 I/O 操作。
使用java.io包,可以轻松执行所有输入输出操作。

使用输入/输出在 Java 中处理文件

直播

流可以定义为由字节组成的数据序列。它被称为溪流,因为它就像一条持续流动的水流。 Stream 有两种类型:

输入流:用于从源读取数据。这可以是文件、数组、外围设备或套接字。
输出流:用于将数据写入目的地。这可以是文件、数组、外围设备或套接字。
输入流的流程如下所示:

Image description

字节流

Java字节流用于执行8位字节的输入和输出。以下是一个使用这两个类将输入文件复制到输出文件的示例 -

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class LearnStream {
    public static void main(String[] args) throws IOException {

       var directory = "D://sample/stream/";
       var fileInput = new FileInputStream(directory+"input.txt");
       var fileOutput = new FileOutputStream(directory+"output.txt");

       try{
           int i;
           while((i= fileInput.read())!=-1){
               fileOutput.write(i);
           }
       } catch (IOException e) {
           throw new RuntimeException(e);
       }

    }

}

现在我们有一个包含以下内容的文件 input.txt

Dimas Priyandi
Software Developer
Java
Angular 
Spring Boot

运行程序,我们得到一个名为output.txt的文件,其中包含以下内容

Dimas Priyandi
Software Developer
Java
Angular 
Spring Boot

示例

为了更好地理解文件输入流和文件输出流,让我们创建一个新示例,其中有一个名为 count.txt 的输入文件。

count.txt内容如下:

100
90
80
70
60
50
40
30
20
10
0

当文件输入流从文件 count.txt 中读取数值数据时,我们会将其存储在数组中,然后执行求和操作来计算数据的总和。请按照以下程序代码操作:

import java.io.*;

public class LeanCount {
    public static void main(String[] args) throws FileNotFoundException {
        var directory = "D://sample/stream/";
        var fileInput = new FileInputStream(directory+"count.txt");
        var fileOutput = new FileOutputStream(directory+"sum.txt");
        Integer sum = 0;
        try{
            var reader = new BufferedReader(new InputStreamReader(fileInput));
            var outputWriter = new BufferedWriter(new OutputStreamWriter(fileOutput));
            String line;
            while((line=reader.readLine()) !=null){
                sum+=Integer.parseInt(line);
            }
            reader.close();
            outputWriter.write(sum.toString());
            outputWriter.close();


        } catch (IOException e) {
            throw new RuntimeException(e);
        }

    }

    }



输出:

  • 我们可以看到 sum.txt 的输出是:
550

说明:

  • FileInputStream:用于从文件 count.txt 读取字节。
  • InputStreamReader:将FileInputStream读取的字节转换为字符。
  • BufferedReader:提供readLine()方法来逐行读取文件。
  • 数字数组:一个整数数组,用于存储从文件中读取的数字。
  • 求和计算:循环对数组中存储的所有数字求和。
  • FileOutputStream:用于将字节写入文件。
  • OutputStreamWriter:将字符流转换为字节流。
  • BufferedWriter:为高效写入字符、数组和行提供缓冲。

总结

Java 的 I/O 流提供了一种处理文件操作的强大方法。通过使用 InputStream 和 OutputStream 及其缓冲对应部分,您可以高效地读取和写入文件。

以上是使用 Java Streams 进行文件输入/输出的技巧的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn