Java 如何在truzip中获取文件大小
我正在使用truezip版本(7.7.9)更新归档文件。 我的做法如下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
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);
}