0

我的 java 数据库小程序程序从当前目录中读取文件,例如 FileInputStream fstream = new FileInputStream("details.txt");

当我通过 appletviewer 运行时,它可以工作,但通过浏览器,它没有显示任何输出。错误 :

Error: details.txt (The system cannot find the file specified)

我把这个文件放在同一个目录下。

我的小程序标签是:

<applet code="hack.database.MyApplet.class" archive="MyApplet.jar, ojdbc14.jar" height="800" width="1000"> </applet>

4

2 回答 2

2

自然不能使用 aFileInputStreamFileInputStream读取文件,也不能在未签名的小程序中访问本地文件系统。您的资源可以通过网络获得,而不是文件。如果您的小程序签名,您引用的代码将在用户文件系统的当前工作目录中查找“details.txt”文件,不一定是包含类文件的目录。

您可以从小程序类正在使用的 jar 中加载资源,Class#getResource以获取URL您可以打开的资源,或者使用Class#getResourceAsStream它来完成所有操作。因此,例如,applet 中的实例方法中的这段代码将打开InputStream与 applet 文件相同的 jar 目录中的“details.txt”class文件:

InputStream is = getClass().getResourceAsStream("details.txt");

我知道这适用于 jar 中的资源。我不能说它是否适用于同一代码库上的其他资源,我总是将所有内容捆绑到 jar 中。另请参阅此相关问题(及其答案)。

所以两个步骤: 将文件放入 jar 中,并使用上面的代码检索其内容。

于 2011-12-30T13:18:25.203 回答
1

您必须使用java.net.URLjava.net.URLConnection类方法来获取InputStream. 未签名的 Applet 无法访问客户端资源,例如本地文件系统。有关更多信息,请阅读 - Applet 可以做什么和不能做什么

于 2011-12-30T12:59:54.490 回答