我想打印一行来计算已经写入文本文件的行数,例如:
202.32.92.47 | 271 | 200
ix-or7-27.ix.netcom.com | 205908 | 200
ram0.huji.ac.il | 271 | 200
eagle40.sasknet.sk.ca | 1116 | 200
eagle40.sasknet.sk.ca | 49649 | 200
cdc8g5.cdc.polimi.it | 461 | 200
Total number of line: 6
这是我的代码的一部分:
Pattern string1 = Pattern.compile("usask.ca");
Pattern string2 = Pattern.compile("128.233.");
Pattern string3 = Pattern.compile("200");
Matcher matcher1 = string1.matcher(sourceAddress);
Matcher matcher2 = string2.matcher(sourceAddress);
Matcher matcher3 = string3.matcher(responseCode);
for (int i = 0; i < sourceAddress.length(); i++)
if ((!matcher1.find() || !matcher2.find()) && matcher3.find()) {
bw.write(sourceAddress + " | " + replySizeInBytes + " | " + responseCode);
bw.newLine();
bw.write("Total number of line: " + i);
bw.newLine();
}
但上面的代码实际上并没有进行计数,只是保持在1并且在每个地址后保持打印输出。我不确定我做错了什么......
答案 0 :(得分:1)
您可以尝试使用Scanner
并调用nextLine()
以及File
。 Here's链接。这样的速度非常快,可以打印出行数:
public void printLineCount() throws FileNotFoundException {
File f = new File("filename.txt");
Scanner s = new Scanner(f);
int i = 0;
while(s.hasNextLine()) {
i++;
s.nextLine();
}
System.out.println("Total number of line: " + i);
}
如果您需要保留代码,请告诉我,我会更新我的回答。
答案 1 :(得分:1)
这是一个例子:
File file = new File("C:");
try{
PrintWriter output = new PrintWriter(file);
output.println("ping www.google.cm");
output.close();
}catch(IOException ex){
frame.setVisible(true);
frame.setAutoRequestFocus(true);
}