Java 读取服务器上的文件

Java 读取服务器上的文件,java,applet,file-permissions,Java,Applet,File Permissions,我有一个小程序,它的部分设计目的是(仅)读取文本文件,并基于此制作内容。在我的小程序中,这是我的“读取”方法,用于读取文件: public void read (String file1) throws IOException { str.removeAllElements (); // str is a global vector BufferedReader dia = new BufferedReader (new FileReader (file1)); for

我有一个小程序,它的部分设计目的是(仅)读取文本文件,并基于此制作内容。在我的小程序中,这是我的“读取”方法,用于读取文件:

public void read (String file1) throws IOException
{
    str.removeAllElements (); // str is a global vector
    BufferedReader dia = new BufferedReader (new FileReader (file1));

    for (;;)
    {
        strc = dia.readLine ();
        if (strc == null)
            break;
        str.add (strc);
    }
}
当我在JVM中运行它时,这很好,但是当我将它联机时,我想要访问的文件无法访问,即使它们托管在同一个服务器和文件夹上

我的小程序的HTML如下所示:

<applet
codebase = "[the url that hosts my class and text files]"
code = "[my class file].class"
width = ###
height = ###>
</applet>

如果有人能帮忙,那就太棒了

小程序在web浏览器中运行。因此,在下载小程序的用户的计算机上。因此,即使您要查找的文件存在于用户的计算机上,您也无法读取它们,因为您无法访问internet上的用户的文件系统。在服务器端读取本地文件。因此,在您的情况下,您可能需要一个servlet而不是applet。

我怀疑这里真正的问题是使用
java.io.File
。暂时搁置服务器/客户端,沙盒小程序根本无法建立
文件。但是稍微扩展一下,一个受信任的小程序可以建立一个
文件,但只能指向客户机本地驱动器上的文件。一个
文件
可以永远指向服务器,它们就是不能这样工作

所以这就导致了。小程序访问资源的正确方法是通过
URL
。Java大量使用URL,甚至用于访问JAR中的类

沙盒小程序可以建立一个URL,指向部署它的服务器


至于如何形成该URL。URL可以相对于(JAR/类的位置)或(HTML的位置)形成。

我知道这主要用于访问本地系统文件,我需要访问服务器上的文件(与我的.class文件位于同一目录中…除非从服务器读取的文件与本地系统文件类似,否则我认为我不需要执行本文中提到的任何项目。您需要通过url通过http协议访问该文件
AccessControlException
access denied ("java.io.FilePermission" "dial1.txt" "read")