Java 从RAR文件加载文件

Java 从RAR文件加载文件,java,io,rar,Java,Io,Rar,我尝试从RAR加载文件。我正在使用 sFileName=Thread.currentThread().getContextClassLoader().getResource("common.xml").getFile(); 我的要求是立即将文件加载到文件IO中 fSettings = new File(sFileName); if (fSettings.exists() && fSettings.isFile()) { 是否可以从类路径加载文件并创建文件对象?是否可以验证 分

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

sFileName=Thread.currentThread().getContextClassLoader().getResource("common.xml").getFile();
我的要求是立即将文件加载到文件IO中

fSettings = new File(sFileName);
if (fSettings.exists() && fSettings.isFile()) {
是否可以从类路径加载文件并创建文件对象?是否可以验证

分享你的想法

我得到以下错误:

22:44:16718错误[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:16718 java.io.FileInputStream.open(本机方法)处的错误[STDERR]


使用
getResource()
获得的URL可能不是文件,在本例中,这不是因为
common.xml
位于RAR文件中。如果您想访问
common.xml
,只需执行
getResourceAsStream()
并读取
InputStream

Hi@Francis Upton,但是如果读取为InputStream,我无法转换为文件IO。您能给出任何转换为文件的建议吗?这很困难,因为您想要的对象位于RAR文件中;你必须得到RAR文件并处理它。RAR文件的成员没有单独的文件对象。为什么需要使用文件IO?一个选项是使用我提到的方法读取它,然后将其写入临时文件,并使用文件I/O。嗨@Francis,因为我不想破坏现有逻辑。以前我们是从文件夹中执行的。但现在我们改为RAR。我们希望加载文件,但不破坏代码。如果不希望破坏现有代码,请按照我前面的建议将其写入临时文件。这是唯一简单的方法。