作者:mobiledu2502901837 | 来源:互联网 | 2023-09-14 14:43
我正在使用FileChannel.truncate()方法从文本“元数据”到结尾删除文件的最后一部分:
override fun truncate(file: File) {
val fileAsText = FileUtils.readFileToString(file,Charset.defaultCharset())
val metadataPosition = fileAsText.indexOf("metadata")
val channel = FileOutputStream(file,true).channel
channel.truncate(metadataPosition.toLong())
channel.close()
}
在调试时,我可以看到变量metadataPosition
具有特定值,在fileAsText
字符串中检查它时是正确的。请注意,“元数据”文本在文件中仅出现一次。但是,在执行channel.truncate(metadataPosition.toLong())
行时,截断在先前的位置执行,并且文件比预期的要小,丢失了一些信息。
我不知道原因,这可能是什么?