Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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 如何将没有标题的文本文件读入ArrayList_Java_Csv - Fatal编程技术网

Java 如何将没有标题的文本文件读入ArrayList

Java 如何将没有标题的文本文件读入ArrayList,java,csv,Java,Csv,我目前正在做一项作业,我找不到任何线索可以从文本文件中删除标题并将其余内容写入ArrayList。有人能帮我吗 ID、Nama、GajiPokok、JmlAbsensi、JmlIzin 2,Peter,5000000,17,3 约翰,4500000,19,1 琳达,10000000,13,7 露西,7000000,20,0 这是我的密码: BufferedReader in = new BufferedReader(new FileReader("D:\\" + args[

我目前正在做一项作业,我找不到任何线索可以从文本文件中删除标题并将其余内容写入ArrayList。有人能帮我吗

ID、Nama、GajiPokok、JmlAbsensi、JmlIzin
2,Peter,5000000,17,3
约翰,4500000,19,1
琳达,10000000,13,7
露西,7000000,20,0
这是我的密码:

BufferedReader in = new BufferedReader(new FileReader("D:\\" + args[0] + ".txt"));
try {
    String line = in.readLine();
    String data[];
    while (line != null){
        data = line.split(",");
        Staff s = new Staff(){};
        s.setID(Integer.parseInt(data[0]));
        s.setNama(data[1]);
        s.setGajiPokok(Long.parseLong(data[2]));
        s.setjmlhAbsensi(Integer.parseInt(data[3]));
        s.setjmlhIzin(Integer.parseInt(data[4]));
        
        s.getID();
        s.getNama();
        s.getGajiPokok();
        s.getjmlhAbsensi();
        s.getjmlhIzin();
       
        list_Staff.addAll(Arrays.asList(s));
        line = in.readLine();
    }
    in.close(); 
}   catch (IOException e){e.printStackTrace();}

如果您想在读取CSV文件时忽略第一行,则可以通过调用.readLine()中的
两次,如下例所示:

BufferedReader in = new BufferedReader(new FileReader("D:\\" + args[0] + ".txt"));
String line = in.readLine();
line = in.readLine(); //skip fist line and read second line
String data[];
while (line != null){
    data = line.split(",");
    Staff s = new Staff(){};
    s.setID(Integer.parseInt(data[0]));
    s.setNama(data[1]);
    s.setGajiPokok(Long.parseLong(data[2]));
    s.setjmlhAbsensi(Integer.parseInt(data[3]));
    s.setjmlhIzin(Integer.parseInt(data[4]));
     
    s.getID();
    s.getNama();
    s.getGajiPokok();
    s.getjmlhAbsensi();
    s.getjmlhIzin();
      
    list_Staff.addAll(Arrays.asList(s));
    line = in.readLine();
}
使用JAVA 8流的
skip()
方法:

try(BufferedReader in = new BufferedReader(new FileReader("D:\\" + args[0] + ".txt"))) {
    Stream<String> lines = in.lines();
    List<Staff> staff = lines.skip(1).map(line -> {
        Staff s = new Staff();
        String data[] = line.split(",");
        s.setID(Integer.parseInt(data[0]));
        s.setNama(data[1]);
        s.setGajiPokok(Long.parseLong(data[2]));
        s.setJmlhAbsensi(Integer.parseInt(data[3]));
        s.setJmlhIzin(Integer.parseInt(data[4]));
        return s;
    }).collect(Collectors.toList());

    System.out.println(staff);
}
try(BufferedReader in=new BufferedReader(新文件读取器(“D:\\”+args[0]+.txt”)){
流线=in.lines();
列表职员=行。跳过(1)。映射(行->{
职员s=新职员();
字符串数据[]=行。拆分(“,”);
s、 setID(Integer.parseInt(数据[0]);
s、 setNama(数据[1]);
s、 setGajiPokok(Long.parseLong(数据[2]);
s、 setJmlhAbsensi(Integer.parseInt(数据[3]);
s、 setJmlhIzin(Integer.parseInt(数据[4]);
返回s;
}).collect(Collectors.toList());
系统输出打印(工作人员);
}

您可以声明以下行两次,或者初始化整数变量,如果其为零,则跳过循环。 String line=in.readLine()

此解决方案有效

private void readTextFile(String fileName) throws FileNotFoundException {
    BufferedReader in = new BufferedReader(new FileReader(fileName));
    
    Stream<String> stream = in.lines();
    List<String> answer = stream.collect(Collectors.toList());
    
    // For Pre-Java8
    /*for (int i = 1; i < answer.size(); i++) {
        System.out.println(answer.get(i));
    }*/
    // Split afterwards.
    
    Stream<String> ans = answer.stream().filter(p -> !p.equals(answer.get(0)));
    ans.forEach(x -> System.out.println(x));
}
private void readTextFile(字符串文件名)引发FileNotFoundException{
BufferedReader in=新的BufferedReader(新文件读取器(文件名));
Stream=in.lines();
List answer=stream.collect(Collectors.toList());
//对于Java8之前的版本
/*for(inti=1;i!p.equals(answer.get(0));
ans.forEach(x->System.out.println(x));
}

它可以工作,但我想不起来它是怎么工作的,你能给我解释一下吗,先生?我有点好奇它到底是怎么工作的,它对我来说没有任何意义,但谢谢你…在这里,.readLine()方法逐行读取数据。当您第一次调用.readLine()时,它将读取第一行,如果您再次调用它,它将读取第二行,依此类推。由于需要从第二行开始处理,所以只需在开始时调用.readLine()两次。这和你读书时一样。若你们想跳过第一页,你们只需翻开那个一页,就可以从第二页开始阅读这本书。我希望我已经解释得很好:)有没有一种方法可以在没有sskip的情况下删除这些标题?