【问题标题】:best way to archive my files in java [closed]在java中存档我的文件的最佳方法[关闭]
【发布时间】:2014-01-27 13:30:33
【问题描述】:

我需要在我的 java 程序中存档很多我需要它们的文件(图像),所以我正在寻找一种存档它们的方法(它们太多了!大约 30 000 张图像)而且我不喜欢将它们归档在一个文件中,这会减慢我的 java 程序对它们的访问速度。所以推荐什么类型的文件,我如何归档它们并使用java访问它们。 我尝试过这样的事情:Adding files to ZIP file,但我不确定是否为我的情况推荐 zip 文件。

【问题讨论】:

  • 存档是什么意思?你只是想把它们打包在一起吗?也许是没有压缩的 ZIP 文件?
  • 是的,我的意思是把它们打包在一起

标签: java file-io


【解决方案1】:

如果这不是您的用例,请随意忽略此答案。

我不知道你需要这些图片有什么用,但 30000 肯定是很多图片。

打包发货,在运行时拆包:通过使用例如LZMA。请注意,要保持跨平台,您应该提供自己的解包工具。 (我认为 ZIP 已经包含在 JDK 中)与导航 .zip 文件相比,这将允许更快的文件访问。

在运行时下载它们: 您可以在第一次运行时下载它们。如果您没有自己的服务器,请尝试 Dropbox、Google Drive 等。无论如何用户都必须下载它们(假设您的程序是初始下载的),因此这不会增加额外的带宽成本。这也使您可以随着时间的推移更换它们而无需硬更新。

批量处理:这在游戏编程中特别流行。您将不同的图像打包到一个文件中(但仍然可以有多个),因此限制了文件的数量。一个简单的方法是使用来自LibGDXTexturePacker

如果没有关于图像分辨率的更多信息,我无法判断哪种方式最适合您。

【讨论】:

  • 每张图片的分辨率为32*32像素
  • @user3185914:你绝对应该尝试批量处理这些!
【解决方案2】:

在应用程序中处理大量静态数据(图像/JS/CSS 等文件)绝不是一个好主意。

处理静态数据的最佳方法是将它们打包到应用程序层次结构之外,例如文件系统中的某个位置,然后在那里访问它们。

【讨论】:

  • 这意味着将它们打包成一个 zip 文件不是很好的主意,我需要将它们打包到一个文件夹中更好?
  • 不......他说将图像打包为应用程序的一部分(即将它们放在 JAR 文件中!)是一个坏主意。问题是你的英语……嗯……很难理解。
【解决方案3】:

很难准确理解您打算做什么。但可能确定哪种方法最快的最好方法是实现两种/所有方法,并测量它们以查看哪种方法最快。

我同意在应用程序中嵌入文件是个坏主意……不管你怎么做。但是,如果您要将它们存储在应用程序之外,那么在将它们压缩存储和/或存档与存储和检索它们所需的额外处理之间存在明显的权衡

什么是“最佳”取决于>>您

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 1970-01-01
    • 2020-12-18
    • 2012-05-05
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    相关资源
    最近更新 更多