Java 如何在truzip中获取文件大小

Java 如何在truzip中获取文件大小,java,truezip,Java,Truezip,我正在使用truezip版本(7.7.9)更新归档文件。 我的做法如下 File entry = new TFile(filepath); writer = new TFileWriter(entry); writer.append("MyString"); writer.flush(); long fileSize = entry.length(); // which always gives value as 0 出于某种目的,我需要确切的文件大小 但这总是0 我还有别的办法吗 我阅读了T

我正在使用truezip版本(7.7.9)更新归档文件。 我的做法如下

File entry = new TFile(filepath);
writer = new TFileWriter(entry);
writer.append("MyString");
writer.flush();
long fileSize = entry.length(); // which always gives value as 0
出于某种目的,我需要确切的文件大小 但这总是0 我还有别的办法吗

我阅读了TFile类的文档\ 无法从以下方面完全理解它的功能

有时,您可能希望将归档文件视为 常规文件而不是虚拟目录。例如,在尝试时 以字节为单位获取存档文件的长度。你通常会 为此,请调用方法File.length()但是,如果文件 对象是TFile类的实例,路径已被删除 检测到命名有效的存档文件,则此方法将始终 返回零。这是因为您可能已更改了存档文件 然后,直到 更改已提交到目标存档文件。


似乎您可以在更改文件之前计算文件的大小,然后添加要添加的内容的大小,或者您需要编写文件,然后调用
file.length()
。您可以通过拨打电话或在官方网页上查看本文来完成此操作

看看这个

[……] 但是,如果File对象是TFile类的实例,并且已检测到命名有效存档文件的路径,则此方法将始终返回零。这是因为您可能已经更改了存档文件,在将更改提交到目标存档文件之前,不可能返回准确的结果

它也适用于TPath

我想知道您是否可以使用Files.size(path)来获取所需的内容(在TZip更改之后和之前)


希望能有所帮助。

如果存档文件有效,则返回0。如果出现任何问题,它将给出IOException

如果要更改任何内容,则需要调用方法
TFile.umount()
,以提交所有更改

然后使用以下方法获取未检测到存档文件的TFile,并调用其
length()
方法:

TrueZIP 7.5
中,您只需调用
TFile.toNonArchiveFile()


您也可以通过另一种方式进行:

private static TFile newNonArchiveFile(TFile file) {
    return new TFile(file.getParentFile(), file.getName(), TArchiveDetector.NULL);
}
资源链接:

private static TFile newNonArchiveFile(TFile file) {
    return new TFile(file.getParentFile(), file.getName(), TArchiveDetector.NULL);
}