从classpath vs文件系统加载Java文件,哪个更好?

时间:2015-01-16 03:45:30

标签: java

假设我想加载一个图像,“img.gif”,从.JAR加载它或从硬盘加载它会更好吗?哪个更有效(速度和内存使用),还是它们基本相同?我知道从类路径加载可能更方便,但我无视这一点。

4 个答案:

答案 0 :(得分:5)

从jar中包装的资源加载通常更好,因为您可以保证资源始终存在。将资源放在文件系统上的其他位置会增加它移动或消失的可能性。

在jar中使用资源也使jar更具可移植性,并且可以在具有不同文件系统的不同操作系统上或在具有不同文件夹结构的不同机器上使用。

我不确定你是否会注意到速度差异。

答案 1 :(得分:2)

过早优化的气味,但JAR文件是一种写在硬盘上的ZIP文件。由于直接读取硬盘驱动器上的字节可以避免解压缩,因此可能更快。当然,您只需要读取和解压缩一次。最后,图像通常不能用LZW压缩,但jar在软件部署和维护方面提供了额外的优势。

答案 2 :(得分:0)

此外,您必须考虑将文件加载到网页上时JAR文件加载速度更快,功能更快,因为它们允许您在单个HTTP事务中加载所有文件,而不是为每个文件打开新连接。

答案 3 :(得分:0)

如果这是某个Web应用程序的一部分,那么您可能希望将GIF放在硬盘中的某个位置,然后在代码中引用该路径。这样,您也可以提供一些安全性。如果将它放在JAR中,它就成了应用程序本身的一部分。重要的是不要公开文件的位置,而是写一些包装类来传输这个GIF文件。

如果它是一个控制台应用程序,那么最好将它与应用程序保持在一起(如在JAR中),以使您的应用程序可移植。

希望它有所帮助。