【问题标题】:File reading applet not running in browser文件读取小程序未在浏览器中运行
【发布时间】:2013-09-11 04:36:04
【问题描述】:

我的 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>

【问题讨论】:

  • 请告诉我们“在同一目录中”是什么意思。 (我认为你对这个问题的回答应该会引导你找到这个问题的答案。)
  • 所有类和 jar 文件所在的文件夹。

标签: java applet appletviewer


【解决方案1】:

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我的小程序已经签名。可以通过appletviewer运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2011-10-26
    相关资源
    最近更新 更多