Java 在不复制代码的情况下,从读取文件类中获取两个变量
我创建了一个名为ReadFile的类,将多个文件中的数据(元素数量和数量)加载到2个arraylist中,以存储元素数量和数量。如何在不复制读取文件代码的情况下获得元素数(4)和以下数字 示例输入文件 四, 101098Java 在不复制代码的情况下,从读取文件类中获取两个变量,java,Java,我创建了一个名为ReadFile的类,将多个文件中的数据(元素数量和数量)加载到2个arraylist中,以存储元素数量和数量。如何在不复制读取文件代码的情况下获得元素数(4)和以下数字 示例输入文件 四, 101098 public class ReadFile { public List <Integer> getNumbers(){ List<Integer> numbers = new ArrayList<>();
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;
}
}
公共类读取文件{
公共列表getNumbers(){
列表编号=新的ArrayList();
File folder=新文件(“/Users/Mary/NetBeansProjects/Sample/src/program/pkg4/Input”);
对于(文件:folder.listFiles()){
试一试{
FileReader FileReader=新的FileReader(文件);
BufferedReader reader=新的BufferedReader(文件读取器);
字符串numberOfElement=reader.readLine();
字符串行=reader.readLine();
对于(字符串s:line.split(\\s+){
add(Integer.parseInt(s));
}
reader.close();
}捕获(IOE异常){
System.out.println(“错误:读取文件时出现问题。\n”+e.getMessage());
}
}
返回号码;
}
公共列表getElements(){
列表元素=新的ArrayList();
File folder=新文件(“/Users/Mary/NetBeansProjects/Sample/src/program/pkg4/Input”);
对于(文件:folder.listFiles()){
试一试{
FileReader FileReader=新的FileReader(文件);
BufferedReader reader=新的BufferedReader(文件读取器);
字符串numberOfElement=reader.readLine();
add(Integer.parseInt(numberOfElement));
reader.close();
}捕获(IOE异常){
System.out.println(“错误:读取文件时出现问题。\n”+e.getMessage());
}
}
返回元素;
}
}
您可以按照@jonathan Heindl的建议执行(将整个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( ... ) {
...
}
}
}
public void parseFile()){
文件夹=。。。;
对于(文件:folder.listFiles()){
试一试{
//创建此文件的读取器
...
int number=getNumber(读卡器);
列表=获取元素(读卡器、编号);
}捕获(…){
...
}
}
}
您甚至可能希望将元素列表放在一个以文件名为键的映射中。从您的注释中不清楚一个文件中是否有多个列表,因此您可能需要执行一些不同的操作来处理这种情况。创建一个函数,以字符串形式返回整个文件,并调用它来解析列表我在这里得到了这部分。但是,如果我想从主类中获取元素和数字。我该怎么办?