gpt4 book ai didi

java - 导出 .jar 时出现 FileNotFoundException

转载 作者:行者123 更新时间:2023-11-30 11:41:58 25 4
gpt4 key购买 nike

在我的客户端/服务器应用程序中,我需要从客户端向服务器发送一些文件(.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com