mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-04 20:58:00 +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.URLUtil;
|
||||||
import cn.hutool.core.util.ZipUtil;
|
import cn.hutool.core.util.ZipUtil;
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
import java.io.*;
|
||||||
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.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLConnection;
|
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"));
|
Assert.assertTrue(FileUtil.getPrefix(prefixDirTempFile).startsWith("prefix"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Ignore
|
||||||
|
public void getTotalLinesTest() {
|
||||||
|
// 千万行秒级内返回
|
||||||
|
final int totalLines = FileUtil.getTotalLines(FileUtil.file(""));
|
||||||
|
Assert.assertEquals(10000000, totalLines);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user