我的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>
答案 0 :(得分:2)
当然,您不能使用FileInputStream
,FileInputStream
用于读取文件,并且您无法在未签名的小程序中访问本地文件系统。您的资源可通过网络获得,而不是作为文件提供。如果您的小程序 已签名,则您引用的代码将在其文件系统中用户当前工作目录中查找“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.URL
和java.net.URLConnection
类方法来获取InputStream
。未签名的Applet无法访问客户端资源,例如本地文件系统。有关详细信息,请阅读 - What Applets Can and Cannot Do。