我可以在网络启动应用中使用Jar API吗?

时间:2012-03-27 17:19:25

标签: java java-web-start

我很想知道我是否可以使用此应用程序与JWS合作。它最初是一个客户端应用程序,带有几个用户数据文件夹。用户可以使用这些文件夹 - 甚至可以从网络添加数据文件。 ...输入JWS ......

此代码适用于不使用JWS的JAR文件,但在使用JWS时无法找到JAR文件。 (jarName =“myjar.jar”)

    static public ArrayList<String> getJarFileList(Dir d, ExtFilter ext) {
    ArrayList<String> list = new ArrayList<String>();

    try {
        FileInputStream fis = new FileInputStream(jarName); 
        JarInputStream jis = new JarInputStream(fis);

        JarEntry jarEntry = null;
        do {
            jarEntry = jis.getNextJarEntry();
            if (jarEntry != null) {
                String fileName = jarEntry.getName();
                if(d == null || fileName.startsWith(d.toString())) {
                    if(ext == null || ext.accept(null, fileName))
                        list.add(fileName);
                }
            }
        } while (jarEntry != null);
        jis.close();            
    } catch (IOException ioe) { }

    return list;
}

最后,我希望能够在JAR中获取数据文件列表,并将它们保存到我在客户端上创建的本地文件夹中。如果可能的话,我想不必确切知道JAR中我必须获取的所有文件的名称 - 因此getJarFileList(用于特定的目录和文件扩展名)。

如果没有直接的方法,也许对我来说最简单的事情就是让应用程序进入网站并将数据文件复制到客户端?关于用于移动这些文件的API的任何建议也值得赞赏。

TIA - 标记

得到了修复......将在2小时内发布...

1 个答案:

答案 0 :(得分:0)

我尝试了几件事,并取得了一些成功!

第一次(不成功)尝试将我的(默认/安装)用户数据目录带到文件中,并将它们放在主jar文件内的jar文件中。然后,我在getClass()返回的InputStream上成功获得了内部jar文件的JarInputStream。getClassLoader()。getResourceAsStream(“myinnerjar.jar”)。我试图从中获取单个文件/流时遇到了麻烦。

在第二次(成功)尝试中,我将数据文件jar放在服务器端,并在我的JWS应用程序中使用URL。 url.openStream()工作,然后只是in.read()和out.write()。这可以在我的机器上的JAR以及Java Web Start中使用。我能够在我的JWS应用程序中创建充满数据文件的本地文件夹。

唯一需要处理的是本地文件的去向(我提供了相对的输出路径),在Windows 7上,他们去了各个地方......嘻嘻。我认为对于各种平台,我会将这些文件夹置于用户的主目录中。

TIA- 标记