如何为多个文本文件创建一个 BufferedReader

How to create one BufferedReader for several text files

我正在尝试从三个单独的文件中读取文本。我想不出更简洁的方法来只使用一个 BufferedReader。有没有一种方法可以在不创建 byte i = 0 的情况下将文本保存到数组的空部分。 我是 Java 的新手,所以感谢您提前回答。

        String unitsPath = "SI_system_units.txt";
    String namesPath = "SI_system_units_names.txt";
    String definitionsPath = "SI_system_definitions.txt";
    String line;
    byte i = 0;
    String[] siUnits = new String[100];
    String[] siNames = new String[100];
    String[] siDefinitions = new String[100];

    BufferedReader unitsBr = new BufferedReader(new FileReader(unitsPath));
    BufferedReader namesBr = new BufferedReader(new FileReader(namesPath));
    BufferedReader definitionsBr = new BufferedReader(new FileReader(definitionsPath));

    while ((line = unitsBr.readLine()) != null) {
        siUnits[i] = line.trim();
        siNames[i] = namesBr.readLine().trim();
        siDefinitions[i] = definitionsBr.readLine().trim();
        i++;
    }

我可以为多个文件使用一个 BufferedReader 吗?

不是真的。单个BufferedReader只能对单个文件进行操作

有更简洁的方法吗?

有一些方法我可以想出一些方法来使代码更清晰一些,但老实说,它们对于你正在做的事情来说有点矫枉过正。

有没有办法在不创建索引指针的情况下将文本保存到数组的空部分(byte i = 0)?

没有。数组是 fixed-length 并且您需要准确指定要放置值的位置。如果你想要一个 dynamically-sized 数组,一个根据需要增长的数组,你可以使用 ArrayList。

注意:数组可能是最基本的数据结构,您需要熟练地使用它们。许多东西都是使用数组构建的,包括 ArrayLists。 ArrayLists 不会消除对数组的需求。

import java.util.ArrayList;  // import statement is required

// ...snip...

String unitsPath = "SI_system_units.txt";
String namesPath = "SI_system_units_names.txt";
String definitionsPath = "SI_system_definitions.txt";
String line;
ArrayList<String> siUnits = new ArrayList<>();
ArrayList<String> siNames = new ArrayList<>();
ArrayList<String> siDefinitions = new ArrayList<>();

BufferedReader unitsBr = new BufferedReader(new FileReader(unitsPath));
BufferedReader namesBr = new BufferedReader(new FileReader(namesPath));
BufferedReader definitionsBr = new BufferedReader(new FileReader(definitionsPath));

while ((line = unitsBr.readLine()) != null) {
    siUnits.add(line.trim());
    siNames.add(namesBr.readLine().trim());
    siDefinitions.add(definitionsBr.readLine().trim());
}

// Don't forget to close your files :)
unitsBr.close();
namesBr.close();
definitionsBr.close();

如果需要,可以从 ArrayList 到数组再返回,但这是另一个故事了。