对于大字符串(60MB 左右),在我的文件末尾FileWriter
附加额外的 s。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
null
出于某种原因,我在文件末尾多了 584个 s。我发现字符串可能被过度分配是合理的,但这些不应该打印到文件中,对吧?更糟糕的是,如果我明确地给它长度:
fstream.write(dat, 0, dat.length());
行为是相同的。巧合的是,如果我说 (dat.length() - 584),它会做我想要的,但仅限于这种特定情况。
有任何想法吗?
JDK版本:1.7.0_02
编辑:为变量添加文件类型(两个字符串)