Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取数据以从文本文件加载游戏_Java_Swing_File_Save_Load - Fatal编程技术网

Java 读取数据以从文本文件加载游戏

Java 读取数据以从文本文件加载游戏,java,swing,file,save,load,Java,Swing,File,Save,Load,嗨,我正在做一个游戏,当我的保存按钮被点击时,它会保存几个状态,例如:名称,总分 我就是这样保存它的: public static void save() { fileName = new File("Saved Game"); try { fw = new FileWriter(fileName,true); } catch (IOException e) { e.printStackTrace

嗨,我正在做一个游戏,当我的保存按钮被点击时,它会保存几个状态,例如:名称,总分

我就是这样保存它的:

public static void save()
{
    fileName = new File("Saved Game");

    try
    { 
        fw = new FileWriter(fileName,true);  
    } 
    catch (IOException e)
    {     
        e.printStackTrace();
        JOptionPane.showConfirmDialog(frame, e.toString() + "\nFail to save game.",   
                "Saved", JOptionPane.DEFAULT_OPTION);
    } 

    f = new Formatter(fw); 
    f.format("\n%s\t",level);
    f.format("\t%s\t",  nameLabel.getText());
    f.format("\t%s\t\t", updatedLabel.getText());

    f.close();


    JOptionPane.showConfirmDialog(frame, "Saving was successful.", "Game Saved",   
            JOptionPane.DEFAULT_OPTION);   
}
我想加载一个游戏,而不是每次都开始一个新游戏。我可以从文本文件中读取数据并将其打印到屏幕上,但不知道如何将这些数据加载到标签(例如名称)中以开始游戏。有什么想法吗

到目前为止,我加载文本文件的代码是:

public static void readFromFile (String  fileName) throws IOException
{
    FileReader fr = new FileReader(fileName);
    BufferedReader br = new BufferedReader(fr);

    System.out.println(br.readLine());

    br.close();
}

我在单击“加载”按钮时调用此方法。任何想法都将不胜感激。

使用readLine()循环每一行,并将其保存到ArrayList中。因为是您创建了文本文件,所以当您从数组中检索值时,您知道每行中应该包含什么

BufferedReader in = new BufferedReader(new FileReader("path/of/text"));
        String str;     

List<String> list = new ArrayList<String>();
        while((str = in.readLine()) != null){
            list.add(str);
        }
BufferedReader in=new BufferedReader(new FileReader(“path/of/text”);
字符串str;
列表=新的ArrayList();
而((str=in.readLine())!=null){
添加(str);
}

将单个保存文件读入工作内存不需要
阵列列表。由于您向方法写入文件,因此隐式地知道数据在哪里,因此如果您的write函数看起来像这样(这有点像伪代码,但它可以理解这一点)

使用
foo
作为角色类实例的名称。您的read函数如下所示

bar.name = inFile.getLine()
bar.health = inFile.getLine()
bar.level = inFile.getLine()

当然,您需要首先将
bar
构建为类的空实例,以及执行所有相关的文件IO设置和内部清理,并且不要忘记从读取函数返回
bar

执行此操作的常用方法是使用从文本文件读取键值对。在本部分中,属性文件用于初始化
AlphaComposite
规则的词汇表。在
JComboBox
中显示一组规则。你也可以使用属性初始化实例中的缺省值,如引用的游戏中所示。

Read。Huh,我不知道,当我第一次从输入文件中读取时,我在C++中工作,所以我没有访问java的广泛库。很高兴知道这一点,但阅读本文的人也要注意,除非您打算永远只使用Java,否则在使用库之前,请确保您知道如何在没有库的情况下解决问题,因为Java中基本的东西在其他语言中通常是完全不存在的
toString()
是我最喜欢的例子。@MitchellCarroll:我试图利用这些库,我发现Java设计在其他地方为我自己的设计提供了信息。在上下文中处理OP问题的荣誉。同样,当我做C++时,我总是确保向我创建的每个对象添加一个<代码> toStReg()/Cuff>函数。利用Java的库可以极大地提高您在使用它时的工作效率,但是依赖它们(Java是我真正致力于学习的第一种语言)可能会成为其他语言的障碍,尤其是c/c++
bar.name = inFile.getLine()
bar.health = inFile.getLine()
bar.level = inFile.getLine()