文件读取小程序未在浏览器中运行

时间:2011-12-30 12:48:43

标签: java applet appletviewer

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

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

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

我将此文件放在同一目录中。

我的applet标签是:

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

2 个答案:

答案 0 :(得分:2)

当然,您不能使用FileInputStreamFileInputStream用于读取文件,并且您无法在未签名的小程序中访问本地文件系统。您的资源可通过网络获得,而不是作为文件提供。如果您的小程序 已签名,则您引用的代码将在其文件系统中用户当前工作目录中查找“details.txt”文件,而不一定是包含类文件的目录。

您可以使用Class#getResource从applet类中使用jar加载资源,以获取可以打开的URL,或使用Class#getResourceAsStream将其全部合并到一起。因此,例如,applet中的实例方法中的此代码将在jar中与applet InputStream文件相同的目录中打开class到“details.txt”文件:

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

我知道这适用于jar中的资源。它是否适用于同一代码库中的其他资源我无法说,我总是将所有内容捆绑到jar中。另请参阅this related question(及其答案)。

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

答案 1 :(得分:1)

您必须使用java.net.URLjava.net.URLConnection类方法来获取InputStream。未签名的Applet无法访问客户端资源,例如本地文件系统。有关详细信息,请阅读 - What Applets Can and Cannot Do