gpt4 book ai didi

java - FileWriter 在文件末尾写入额外的空值

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:41 24 4
gpt4 key购买 nike

对于大字符串(60MB 或这么长),FileWriter 将额外的 null 添加到我的文件末尾。对于小字符串,此代码按预期工作。

为清楚起见,dat 和 filePath 是字符串。

FileWriter fstream = new FileWriter( filePath );
fstream.write( dat );
fstream.close();

File f = new File( filePath );
System.out.println("Data: " + dat.length() + ", File: " + f.length());

简而言之,在什么情况下,两次打印的值应该不同?

这是我的示例输出:

Data: 63833144, File: 63833728

出于某种原因,我在文件末尾得到了 584 个额外的 null。我发现字符串可能被过度分配是合理的,但这些不应该打印到文件,对吧?更糟糕的是,如果我明确地给它长度:

fstream.write(dat, 0, dat.length());

行为是一样的。巧合的是,如果我说 (dat.length() - 584),它会做我想做的,但仅限于这种特定情况。

有什么想法吗?

JDK 版本:1.7.0_02

已编辑:为变量添加文件类型(均为字符串)

最佳答案

什么是“达”?如果“dat”是一个StringBuffer,你需要小心。如果 StringBuffer 的长度大于其内容,则将在末尾附加空值。您可以尝试使用 dat.toString()。我相信空字符将在转换中被修剪。

关于java - FileWriter 在文件末尾写入额外的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com