有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用Java IO保存3d数据

我设置了一个文件和一个基本的读写器,但当我更改值时,它不会写入新值 以下是代码:

国际体质水平、实力水平

int[] saveStats = { constitutionLevel, strengthLevel };

int constitutionLevelLocation = 0;
int strengthLevelLocation = 1;

public StatSaver()
{
    constitutionLevel = Constitution.getConstitutionLevel();
    strengthLevel = Strength.getStrengthLevel();
}

public void startSaving()
{
    readPlayer("SaveManagement/Stats/save.txt");
    updatePlayerStats();
    savePlayer("SaveManagement/Stats/save.txt");
}

private void updatePlayerStats()
{
    System.out.println("Saving Stats...");
    System.out.println(constitutionLevel);
    constitutionLevel = saveStats[constitutionLevelLocation];
    strengthLevel = saveStats[strengthLevelLocation];
    System.out.println(constitutionLevel);
    System.out.println("Done Saving Stats");
}

private void readPlayer(String filePath)
{
    File inputFile;
    BufferedReader inputReader;

    try
    {
        inputFile = new File(filePath);
        inputReader = new BufferedReader(new FileReader(inputFile));

        for (int i = 0; i < saveStats.length; i++)
        {
            saveStats[i] = Integer.parseInt(inputReader.readLine());
        }

        inputReader.close();
    } catch (Exception e) { e.printStackTrace(); }

}

private void savePlayer(String filePath)
{
    File outputFile;
    BufferedWriter outputWriter;

    try
    {
        outputFile = new File(filePath);
        outputWriter = new BufferedWriter(new FileWriter(outputFile));
        outputWriter.write(saveStats[0] + "\n");
        outputWriter.write(saveStats[1] + "\n");
        //for (int i = 0; i < saveStats.length; i++)
        //{
        //  outputWriter.write(saveStats[i] + "\n");
        //}

        outputWriter.close();
    } catch (Exception e) { e.printStackTrace(); }

}

正如你所看到的,我有一行代码被注释掉了,但是上面的两行代码做了同样的事情,我只需要输入更多的东西,我可以修改它,做一些更大的事情,但是因为我现在有两个统计数据,我不着急。唯一的短期解决方案是改变价格。txt文件,但当我公开游戏时,这将不起作用,因为每个人都会将属性设置为无穷大。无论如何,请提前帮助和感谢


共 (1) 个答案

  1. # 1 楼答案

    因此,在startSaving()方法中,从readPlayer()读入信息(我假设是存储在文件中的旧值),然后将这些值放入数组中。在updatePlayerStats()中,获取数组中的值,并将它们放入两个变量中(覆盖构造函数放入其中的内容)。最后,savePlayer()方法从数组中获取信息,并将其保存到文件中。在任何时候都没有更改数组中的值,因此没有向文件中添加新的数字