gpt4 book ai didi

java - 获取资源的大小

转载 作者:行者123 更新时间:2023-12-02 03:48:30 25 4
gpt4 key购买 nike

我正在使用 getClass().getResourceAsStream(path) 从捆绑资源中读取。

在读取整个流之前如何知道文件大小?

打包后我无法使用 getClass().getResource(path).toURI() 访问它们,因此不起作用。

最佳答案

我尝试回答这篇文章Ask for length of a file read from Classpath in java但他们将其标记为与您的问题重复,所以我在这里给出我的答案!

可以使用以下方法获取简单文件的大小:

File file = new File("C:/Users/roberto/Desktop/bar/file.txt");
long length = file.length();
System.out.println("Length: " + length);
<小时/>

file.txt 打包在 jar 中时,.length() 将始终返回 0。
所以我们需要使用JarFile:

JarFile jarFile = new JarFile("C:/Users/roberto/Desktop/bar/foo.jar");
Object size = jarFile.getEntry("file.txt").getSize();
System.out.println("Size: " + size.toString())

您也可以获得压缩后的大小:

JarFile jarFile = new JarFile("C:/Users/roberto/Desktop/bar/foo.jar");
Object compressedSize = jarFile.getEntry("file.txt").getCompressedSize();
System.out.println("CompressedSize: " + compressedSize);
<小时/>

仍然可以使用 jar 命令获取打包在 jar 中的文件的大小:

jar tvf Desktop\bar\foo.jar file.txt

输出将为:5 Thu Jun 27 17:36:10 CEST 2019 file.txt
其中 5 是大小。

您可以在代码中使用它:

Process p = Runtime.getRuntime().exec("jar tvf C:/Users/roberto/Desktop/bar/foo.jar file.txt");
StringWriter writer = new StringWriter();
IOUtils.copy(p.getInputStream(), writer, Charset.defaultCharset());
String jarOutput = writer.toString();

但是运行jar命令需要jdk。

关于java - 获取资源的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56792105/

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