mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
新增:获取文件行数FileUtil.getTotalLines
This commit is contained in:
parent
4cb2bc42cd
commit
791e0bb85f
@ -22,21 +22,7 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.core.util.URLUtil;
|
||||
import cn.hutool.core.util.ZipUtil;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.RandomAccessFile;
|
||||
import java.io.Reader;
|
||||
import java.io.*;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
@ -567,6 +553,32 @@ public class FileUtil extends PathUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算文件的总行数
|
||||
*
|
||||
* @param file 文件
|
||||
* @return 该文件总行数
|
||||
*/
|
||||
public static int getTotalLines(File file) {
|
||||
if (!isFile(file)) {
|
||||
throw new IORuntimeException("input must be file");
|
||||
}
|
||||
|
||||
try (
|
||||
final BufferedReader reader = getReader(file, CharsetUtil.CHARSET_UTF_8);
|
||||
final LineNumberReader lineNumberReader = new LineNumberReader(reader)
|
||||
) {
|
||||
// 设置起始为1
|
||||
lineNumberReader.setLineNumber(1);
|
||||
// 跳过文件中内容
|
||||
lineNumberReader.skip(Long.MAX_VALUE);
|
||||
// 获取当前行号
|
||||
return lineNumberReader.getLineNumber();
|
||||
} catch (IOException e) {
|
||||
throw new IORuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 给定文件或目录的最后修改时间是否晚于给定时间
|
||||
*
|
||||
|
@ -466,4 +466,12 @@ public class FileUtilTest {
|
||||
Assert.assertTrue(FileUtil.getPrefix(prefixDirTempFile).startsWith("prefix"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void getTotalLinesTest() {
|
||||
// 千万行秒级内返回
|
||||
final int totalLines = FileUtil.getTotalLines(FileUtil.file(""));
|
||||
Assert.assertEquals(10000000, totalLines);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user