【问题标题】:To load the File from the RAR file从 RAR 文件加载文件
【发布时间】:2012-07-14 16:58:28
【问题描述】:

我尝试从 RAR 加载文件。我正在使用

sFileName=Thread.currentThread().getContextClassLoader().getResource("common.xml").getFile();

立即,我的要求是将文件加载到文件 IO。

fSettings = new File(sFileName);
if (fSettings.exists() && fSettings.isFile()) {

是否可以从类路径加载文件并创建文件对象?可以验证吗?

分享你的想法。

我收到以下错误:

22:44:16,718 错误 [STDERR] java.io.FileNotFoundException: 文件:\C:\Servers\ApplicationServers\jboss-4.2.3.GA\server\XXXX\tmp\deploy \XXX.ear-contents\XXX.rar!\common.xml(文件名、目录名或卷标语法不正确) 22:44:16,718 错误 [STDERR] 在 java.io.FileInputStream.open(本机方法)

【问题讨论】:

    标签: java io rar


    【解决方案1】:

    您通过getResource() 获得的URL 可能不是文件,在这种情况下,这不是因为您的common.xml 在RAR 文件中。如果您想访问common.xml,只需执行getResourceAsStream() 并阅读InputStream

    【讨论】:

    • 嗨@Francis Upton,但如果读取为 InputStream ,我无法转换为文件 IO。您能提供任何建议转换为文件吗?
    • 这很困难,因为您想要的对象在 RAR 文件中;您将必须获取 RAR 文件并对其进行处理。 RAR 文件的成员没有单独的文件对象。为什么需要使用 File IO 呢?
    • 一种选择是使用我提到的方法读取它,然后将其写入临时文件并使用文件 I/O。
    • 嗨@Francis,因为,我不想破坏现有的逻辑。以前我们从文件夹中做到这一点。但现在我们在RAR中移动的情况。从那个罕见的,我们想要加载文件,但不破坏代码。
    • 如果您不想破坏现有代码,请按照我之前的建议将其写入临时文件。这是唯一简单的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多