序列化applet中的对象

时间:2011-03-14 02:43:18

标签: java serialization applet

好吧,简单地说我正在java applet中进行测验游戏,我想序列化存储高分的对象。当我这样做时,它在eclipse中完美运行,但不适用于浏览器。

以下是我的applet的代码,它读取文件: 是的,我有所有适当的进口

package histApplet;

public class QuizApplet extends Applet
{
private static final String TRACKERLOC = "histApplet/track.ser";
private StatsTracker tracker;
private int difflevel = 1;
//other instance variables


public void init()
{
    //other code
    if(new File(TRACKERLOC).exists())
    {
        tracker = null;
        FileInputStream fis = null;
        ObjectInputStream in = null;
        try
        {
            fis = new FileInputStream(TRACKERLOC);
            in = new ObjectInputStream(fis);
            tracker = (StatsTracker)in.readObject();
            in.close();
        }
        catch(IOException ex)
        {
            ex.printStackTrace();
        }
        catch(ClassNotFoundException ex)
        {
            ex.printStackTrace();
        }
    }
    else
    {
        tracker = new StatsTracker(difflevel);
    }
    //other code
}

这是我的HTML代码

<html>
<head><title>QuizApplet</title></head>
<body>

<center><applet code="histApplet/QuizApplet.class" height=550 width=700>
</applet></center>

</body>
</html>

如果我注释掉这段代码,它可以在浏览器中使用,但不会。我不确定为什么这不起作用,任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

请参阅how to write into a text file in Java上的答案。

答案 1 :(得分:1)

Java Applet在浏览器的沙箱中执行,因此对运行applet的客户端计算机(进入浏览器)的资源访问权限有限。 Applet无法访问文件系统,如多个站点SecuringJavaOracle中所述。

您需要签署您的Applet(可信代码)才能访问文件系统Oracle

答案 2 :(得分:0)

正如David所写,applet无法访问本地文件系统。

他们可以将数据发送给他们来自的主机(并从那里接收答案),因此如果你有一些接受这些高分的服务器端程序,你可以将高分存储在服务器上。

另一种方法是使用a JNLP-deployed applet,然后您的applet可以使用PersistenceService访问特定于applet的本地存储。