Java 避免在.txt文件中写入额外的新行

Java 避免在.txt文件中写入额外的新行,java,nio,Java,Nio,目前我正在使用java.nio.file.file.write(Path,Iterable,Charset)来编写txt文件。代码在这里 Path filePath = Paths.get("d:\\myFile.txt"); List<String> lineList =Arrays.asList("1. Hello", "2. I am Fine", "3. What about U ?"); Files.write(filePath, lineList,

目前我正在使用
java.nio.file.file.write(Path,Iterable,Charset)
来编写txt文件。代码在这里

    Path filePath = Paths.get("d:\\myFile.txt");
    List<String> lineList =Arrays.asList("1. Hello", "2. I am Fine", "3. What about U ?");
    Files.write(filePath, lineList, Charset.forName("UTF-8"));

检查
文件。编写调用的代码:

public static Path write(Path path, Iterable<? extends CharSequence> lines,
                             Charset cs, OpenOption... options)
        throws IOException
    {
        // ensure lines is not null before opening file
        Objects.requireNonNull(lines);
        CharsetEncoder encoder = cs.newEncoder();
        OutputStream out = newOutputStream(path, options);
        try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out, encoder))) {
            for (CharSequence line: lines) {
                writer.append(line);
                writer.newLine(); 
            }
        }
        return path;
    }

解决方案是:将数据提供为
字节[]

Path filePath = Paths.get("/Users/maxim/Appsflyer/projects/DEMOS/myFile.txt");
List<String> lineList =Arrays.asList("1. Hello", "2. I am Fine", "3. What about U ?");
String lineListStr = String.join("\n", lineList);
Files.write(filePath, lineListStr.getBytes(Charset.forName("UTF-8")));
Path filePath=Path.get(“/Users/maxim/Appsflyer/projects/DEMOS/myFile.txt”);
List lineList=Arrays.asList(“1.你好”,“2.我很好”,“3.你呢?”);
String lineListStr=String.join(“\n”,lineList);
Files.write(filePath,lineListStr.getBytes(Charset.forName(“UTF-8”));
来自javadoc for write:“每一行都是一个字符序列,按顺序写入文件,每一行都由平台的行分隔符终止,如系统属性行.separator所定义。”

想做什么就做什么最简单的方法:

List<String> lineList =Arrays.asList("1. Hello", "2. I am Fine");
String lastLine = "3. What about U ?"; 
Files.write(filePath, lineList, Charset.forName("UTF-8"));
Files.write(filePath, lastLine.getBytes("UTF-8"), StandardOpenOption.APPEND);
List lineList=Arrays.asList(“1.你好”,“2.我很好”);
String lastLine=“3.你呢?”;
Files.write(文件路径、行列表、Charset.forName(“UTF-8”);
write(filePath,lastLine.getBytes(“UTF-8”),StandardOpenOption.APPEND);
我愿意

Files.writeString(filePath, String.join("\n",lineList), Charset.forName("UTF-8"));

哦是的。那么,我如何避免/删除这条新线路?@M.A.Khomeni请查看,我认为这是一个更好的解决方案是的,@Maxim Shoustin它工作正常,谢谢。但我有太多的行,大约500000行,每行1100个字符。似乎这会生成两个文件,第一个(两行)被最后一个(一行)替换。最后,我将得到一个只有一行的文件。。。我忘了添加开放选项。修正了,是的!这就是我想要的。非常感谢。亲爱的@BorLaze。我可以附加2个或更多
列表行列表一个接一个地添加到我的文本文件中。像<代码>文件。写入(/*第1行列表*/);文件。写(/*第二行列表*/)文件。写(/*第三行列表*/)
@M.A.Khomeni,为什么不写?以同样的方式:
Files.write(filePath,lineList1,Charset.forName(“UTF-8”),StandardOpenOption.APPEND);write(filePath,lineList2,Charset.forName(“UTF-8”),StandardOpenOption.APPEND)
etc.IMHO,使用终止换行符比不使用它要好。例如,我在下面得到了一个很好的答案。谢谢@亨利
List<String> lineList =Arrays.asList("1. Hello", "2. I am Fine");
String lastLine = "3. What about U ?"; 
Files.write(filePath, lineList, Charset.forName("UTF-8"));
Files.write(filePath, lastLine.getBytes("UTF-8"), StandardOpenOption.APPEND);
Files.writeString(filePath, String.join("\n",lineList), Charset.forName("UTF-8"));