Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不复制代码的情况下,从读取文件类中获取两个变量_Java - Fatal编程技术网

Java 在不复制代码的情况下,从读取文件类中获取两个变量

Java 在不复制代码的情况下,从读取文件类中获取两个变量,java,Java,我创建了一个名为ReadFile的类,将多个文件中的数据(元素数量和数量)加载到2个arraylist中,以存储元素数量和数量。如何在不复制读取文件代码的情况下获得元素数(4)和以下数字 示例输入文件 四, 101098 public class ReadFile { public List <Integer> getNumbers(){ List<Integer> numbers = new ArrayList<>();

我创建了一个名为ReadFile的类,将多个文件中的数据(元素数量和数量)加载到2个arraylist中,以存储元素数量和数量。如何在不复制读取文件代码的情况下获得元素数(4)和以下数字

示例输入文件

四,

101098

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(读卡器);
列表=获取元素(读卡器、编号);
}捕获(…){
...
}
}
}

您甚至可能希望将元素列表放在一个以文件名为键的映射中。从您的注释中不清楚一个文件中是否有多个列表,因此您可能需要执行一些不同的操作来处理这种情况。

创建一个函数,以字符串形式返回整个文件,并调用它来解析列表我在这里得到了这部分。但是,如果我想从主类中获取元素和数字。我该怎么办?