扫描播放器数据的文件

时间:2014-08-17 03:23:47

标签: java string file libgdx

我正在尝试扫描我拥有的播放器数据文件,并将播放器数据设置为等于文件中的内容。该文件看起来像我想要保存数据并读取播放器数据。我怎么样?

HP = 10
Atk = 2
Def = 5;

我需要将其设置为球员的健康等等。这是我使用的。

 File dir = new File("c:\\Project0\\data\\Playerstuff");
        if (!dir.exists()) {
            if (dir.mkdirs()) {
                System.out.println("Directory is created!");
            } else {
                System.out.println("Failed to create directory!");
            }

String fileName="hi";
        File tagFile=new File(dir,fileName+".txt");
        if(!tagFile.exists()){
        try {



            FileWriter fw = new FileWriter(tagFile.getAbsoluteFile());
            BufferedWriter bw = new BufferedWriter(fw);
            bw.write("HP: " + p.getAtk());
            bw.close();

            Scanner s = new Scanner(tagFile);
            s.findInLine("HP: ");
        } catch (IOException ie) {ie.printStackTrace(); System.out.println("Error loading game directory");}
        }

1 个答案:

答案 0 :(得分:0)

不确定为什么你会同时阅读和写作,你保存数据的方式似乎并不适合阅读。我尝试将数据保存为,例如

HP=10
ATK=2
DEF=5

然后当你阅读数据时:

Scanner s = new Scanner(tagFile);
while(s.hasNextLine()) {
    String info = s.nextLine();
    if (info.startsWith("HP") {
        int hp = Integer.parseInt(info.substring(info.indexOf("=" + 1),info.length()));
        p.setHP(hp);
    }
    else if (...) //Etc... for all the other values
}

在没有if / else的情况下,另一种方法是始终按照特定顺序保存数据(例如,首先是hp,然后是atk,然后是def),在这种情况下你不必检查。但这可能会让人感到困惑。