java - 导出 .jar 时出现 FileNotFoundException

标签 java jar applet inputstream filenotfoundexception

在我的客户端/服务器应用程序中,我需要从客户端向服务器发送一些文件(.txt.doc 等)。当我在 Eclipse 中运行我的代码时,它可以工作,但是当我导出 Applet 的已签名 JAR 时,它却没有。它抛出一个 FileNotFoundException。我尝试以多种方式保存文件,但均未成功。

public static boolean saveFile(File sourceFile) throws IOException {

    DirectoryChooserDialog dialog = new DirectoryChooserDialog();
    filePath = dialog.getDestinationFolder();
    if (filePath != null) {
        InputStream inputFile = ClassLoader.getSystemResourceAsStream(""+sourceFile);

        filePath += File.separator + sourceFile.getName();

        FileOutputStream outputFile = new FileOutputStream(filePath);

        int byteLetti = 0;
        while ((byteLetti = inputFile.read(buffer)) >= 0) {
            outputFile.write(buffer, 0, byteLetti);
            outputFile.flush();
        }

        inputFile.close();

        outputFile.close();

        return true;
    } else
        return false;
}

使用的替代代码:

FileInputStream inputFile = new FileInputStream(sourceFile);

或者

InputStream inputFile = ClassLoader.class.getResourceAsStream(""+sourceFile);

或者

InputStream inputFile = FileSaving.class.getResourceAsStream(""+sourceFile);

原始代码和每个替代代码在 Eclipse 中工作,并在导出时停止工作。

最佳答案

此代码正在查找类路径中的文件。如果那里没有文件,它会抛出 FNF。当您在 Eclipse 中工作时,您的文件可能位于 src 中,因此它被复制到 bin 中。将文件存档到 jar 后,您可以通过 getResourcegetResourceAsStream

访问它
InputStream inputFile = this.getClass().getClassLoader().getResourceAsStream(sourceFile.getName())

或使用 URL。例如

URL url = new URL("jar:file:/c:/path/to/my.jar!/myfile.txt"); 
JarURLConnection conn = (JarURLConnection)url.openConnection();
InputStream inputFile = conn.getInputStream();

关于java - 导出 .jar 时出现 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12025689/

相关文章:

java - 想要隐藏或删除或替换评论 "Applet Started"

Java小程序在本地运行,但不在主机上运行

java - 从 JUnit 中的 'before' 方法中排除个别测试

java - 我收到 System.out.printf() 错误

java - 在运行时加载 JDBC 驱动程序

java - jar 文件内的文件夹路径

java - ArrayList<List<>>变量在Java中通过引用复制值?

java - 如何从Firebase数据库中删除Geofire key -JAVA

java - 如何使用eclipse打包jar文件而不包含依赖jar库?

java - Applet 和动态类加载问题