[],获取文本文件行数时忽略“回车符”的有关问题
[在线等]求助,获取文本文件行数时忽略“回车符”的问题
网上找了个获取文本文件行数的代码,但是代码里面用的LineNumberReader对于回车、换行、回车换行都会认为是新的一行。现在我有个大文件,里面有1千万行,有1.5G,它的行结束符是“换行符”,但是文件内容会包括有有回车符。现在用LineNumberReader统计的话,总会多出几行来,有啥好办法?同时要注意效率,毕竟文件很大。
------解决方案--------------------
你可以用正则表达式 \r 是匹配一个回车的
------解决方案--------------------
LineNumberReader 可认为行在遇到以下符号之一时结束:换行符('\n')、回车符('\r')、回车后紧跟换行符。
网上找了个获取文本文件行数的代码,但是代码里面用的LineNumberReader对于回车、换行、回车换行都会认为是新的一行。现在我有个大文件,里面有1千万行,有1.5G,它的行结束符是“换行符”,但是文件内容会包括有有回车符。现在用LineNumberReader统计的话,总会多出几行来,有啥好办法?同时要注意效率,毕竟文件很大。
/**
* 获取文件行数
* @param fileName - 文件路径
* @return 文件行数
*/
public static Integer getRowCount(String fileName) {
Integer rowCount = 0;
File f = new File(fileName);
long length = f.length();
LineNumberReader lnr = null;
try {
lnr = new LineNumberReader(new FileReader(f));
if (lnr != null) {
lnr.skip(length);
rowCount = lnr.getLineNumber();
lnr.close();
}
} catch (IOException e) {
if (lnr != null) {
try {
lnr.close();
} catch (IOException ee) {
}
}
}
return rowCount;
}
------解决方案--------------------
你可以用正则表达式 \r 是匹配一个回车的
------解决方案--------------------
LineNumberReader 可认为行在遇到以下符号之一时结束:换行符('\n')、回车符('\r')、回车后紧跟换行符。