我创建了一个名为 ReadFile 的类,用于将数据(元素的数量和数量(从多个文件加载到 2 个 arraylist 中,以存储元素数量的两个数量。如何在不重复读取文件代码的情况下获得元素数 4 和以下数字?
示例输入文件
四
1 10 9 8
public class ReadFile {
public List <Integer> getNumbers(){
List<Integer> numbers = new ArrayList<>();
File folder = new File("/Users/Mary/NetBeansProjects/Sample/src/program/pkg4/Input");
for (File file : folder.listFiles()) {
try{
FileReader fileReader = new FileReader(file);
BufferedReader reader = new BufferedReader(fileReader);
String numberOfElement = reader.readLine();
String line = reader.readLine();
for (String s : line.split("\s+")) {
numbers.add(Integer.parseInt(s));
}
reader.close();
}catch(IOException e){
System.out.println("ERROR: There was a problem reading the file.n" + e.getMessage());
}
}
return numbers;
}
public List <Integer> getElements(){
List<Integer> elements = new ArrayList<>();
File folder = new File("/Users/Mary/NetBeansProjects/Sample/src/program/pkg4/Input");
for (File file : folder.listFiles()) {
try{
FileReader fileReader = new FileReader(file);
BufferedReader reader = new BufferedReader(fileReader);
String numberOfElement = reader.readLine();
elements.add(Integer.parseInt(numberOfElement));
reader.close();
}catch(IOException e){
System.out.println("ERROR: There was a problem reading the file.n" + e.getMessage());
}
}
return elements;
}
}
你可以
按照Heindl建议@jonathan做(将整个fie读成一个字符串(,或者你至少可以将阅读器的创建移动到两个方法之外:
public void parseFile()) {
File folder = ...;
for (File file : folder.listFiles()) {
try {
// create reader for this file
...
int number = getNumber(reader);
List<Integer> = getElements(reader, number);
} catch( ... ) {
...
}
}
}
您甚至可能希望将元素列表放在以文件名为键的映射中。从您的评论中不清楚单个文件中是否有多个列表,因此您可能需要执行其他操作来处理这种情况。