gpt4 book ai didi

Java 扫描器仅读取文件的第一行

转载 作者:行者123 更新时间:2023-12-02 01:57:00 25 4
gpt4 key购买 nike

我编写这段代码是因为我需要读取文件的某些行来获取数据并将它们放入对象中。问题是扫描仪只读取第一行。我尝试打印System.out.println(sc.hasNext());以此并调试代码,但当第一个周期执行 while 条件(sc.hasNext())时返回 false 。但文件中有 2 行。

Scanner sc =null;
int[] counter=new int[users.length];


for(int i=0;i<users.length-1;i++){
sc= new Scanner(new FileReader("src/MailListUser"+String.valueOf(i+1)+".txt")).useDelimiter("\\s*^^\\s*");
while(sc.hasNext()){
String mail =sc.next();
String [] data= mail.split(":::");
Email email;
String dat=data[5].replaceAll("_", " ");
DateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy",Locale.ENGLISH);
Date date = format.parse(dat);
email = new Email(data[1],data[2],data[3],data[4],date,Integer.parseInt(data[6]));
if(i+1==1) {
counter[i]++;
mbUser1.add(email);
}
else if(i+1==2){
counter[i]++;
mbUser2.add(email);
}
else if(i+1==3){
counter[i]++;
mbUser3.add(email);
}

}

}
sc.close();

有代码。该文件包含:

^^:::user1@unito.it:::user1@unito.it:::grbvfcsx:::yrdfsx:::Wed_Sep_05_09:25:51_CEST_2018:::-1568000361:::^^
^^:::user1@unito.it:::user1@unito.it:::rgvfcdsx:::trvedcs:::Wed_Sep_05_09:27:53_CEST_2018:::482784668:::^^

该文件的每一行都以 ^^ 开头并以 ^^ 结尾

我不明白为什么这段代码只读取一行

最佳答案

在正则表达式中,^是一个特殊字符。它代表输入的开始,而不仅仅是字符 ^ 本身。

您需要在模式中转义它:

"\\s*\\^\\^\\s*"

关于Java 扫描器仅读取文件的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52180497/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com