2014-11-16 2 views
0

У меня есть файл и основной читатель и писатель настроить, но когда я изменить значение, которое он не запишет новое значение Вот код:Сохранение статистики с Java IO

INT constitutionLevel, strengthLevel;

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, но это не сработало бы, если бы я публиковал игру, потому что все ставили стат на бесконечность. В любом случае, пожалуйста, помогите и заблаговременно!

+0

'startSaving' не вызывается из этого кода. Вы уверены, что его зовут? – sherb

+0

Я называю это, когда останавливаю и очищаю игру. – daniel

ответ

0

Итак, в вашем методе startSaving() вы читаете информацию из readPlayer() (которая, как я полагаю, является старыми значениями, хранящимися в файле), а затем помещаем значения в массив. В updatePlayerStats() вы берете значения в массиве и помещаете их в две переменные (переписывая то, что было размещено в них конструктором). Наконец, метод savePlayer() берет информацию из массива и сохраняет их в файл. Ни в коем случае вы не изменили значения в массиве, поэтому новые значения не добавляются в файл.

Смежные вопросы