mirror of
https://gitee.com/dromara/hutool.git
synced 2025-06-28 13:34:09 +08:00
FileWriter
增加方法,可选是否追加换行符(issue#3858@Github)
This commit is contained in:
parent
7608e08c2e
commit
f3c97bdc4d
@ -629,11 +629,17 @@ public class FileUtil extends PathUtil {
|
|||||||
readChars = is.read(chars);
|
readChars = is.read(chars);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 最后一个字符为换行符,则单独计数行
|
if(lastLineSeparatorAsNewLine){
|
||||||
// Linux下最后一行要求必须有换行符,不能单独计算一行,此处交给用户选择
|
// 最后一个字符为\r,则单独计数行
|
||||||
if(lastLineSeparatorAsNewLine && c == CharUtil.CR){
|
if(c == CharUtil.CR){
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
|
// 最后一个字符为\n,则可选是否算作新行单独计数行
|
||||||
|
if(c == CharUtil.LF){
|
||||||
|
--count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return count;
|
return count;
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -4,6 +4,7 @@ import cn.hutool.core.collection.ListUtil;
|
|||||||
import cn.hutool.core.io.file.LineSeparator;
|
import cn.hutool.core.io.file.LineSeparator;
|
||||||
import cn.hutool.core.lang.Console;
|
import cn.hutool.core.lang.Console;
|
||||||
import cn.hutool.core.util.CharsetUtil;
|
import cn.hutool.core.util.CharsetUtil;
|
||||||
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Disabled;
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
@ -538,22 +539,31 @@ public class FileUtilTest {
|
|||||||
@Test
|
@Test
|
||||||
public void getTotalLinesTest() {
|
public void getTotalLinesTest() {
|
||||||
// 此文件最后一行有换行符,则最后的空行算作一行
|
// 此文件最后一行有换行符,则最后的空行算作一行
|
||||||
final int totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines.csv"));
|
int totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines.csv"));
|
||||||
assertEquals(8, totalLines);
|
assertEquals(8, totalLines);
|
||||||
|
|
||||||
|
totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines.csv"), -1, false);
|
||||||
|
Assertions.assertEquals(7, totalLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTotalLinesCrTest() {
|
public void getTotalLinesCrTest() {
|
||||||
// 此文件最后一行有换行符,则最后的空行算作一行
|
// 此文件最后一行有换行符,则最后的空行算作一行
|
||||||
final int totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines_cr.csv"));
|
int totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines_cr.csv"));
|
||||||
assertEquals(8, totalLines);
|
assertEquals(8, totalLines);
|
||||||
|
|
||||||
|
totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines_cr.csv"), -1, false);
|
||||||
|
Assertions.assertEquals(7, totalLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getTotalLinesCrlfTest() {
|
public void getTotalLinesCrlfTest() {
|
||||||
// 此文件最后一行有换行符,则最后的空行算作一行
|
// 此文件最后一行有换行符,则最后的空行算作一行
|
||||||
final int totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines_crlf.csv"));
|
int totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines_crlf.csv"));
|
||||||
assertEquals(8, totalLines);
|
assertEquals(8, totalLines);
|
||||||
|
|
||||||
|
totalLines = FileUtil.getTotalLines(FileUtil.file("test_lines_crlf.csv"), -1, false);
|
||||||
|
Assertions.assertEquals(7, totalLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Loading…
Reference in New Issue
Block a user