如何为多个文本文件创建一个 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 到数组再返回,但这是另一个故事了。
我正在尝试从三个单独的文件中读取文本。我想不出更简洁的方法来只使用一个 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 到数组再返回,但这是另一个故事了。