2014-08-10 4 views
-1

Я искал прошлый час, пытаясь найти причину этого, но ничего не нашел. Это очень маленький текстовый файл (максимум 4 символа), поэтому я не беспокоился о BufferedReader или BufferedWriter. Проблема заключается в том, что, хотя у меня есть писатель, вставьте переменную в файл и даже закройте файл, он фактически не сохраняет изменения в файле. Я проверил это, проверив файл сразу после запуска метода, содержащего этот код.Java FileWriter вообще не меняет файл

try { 
    int subtract = Integer.parseInt(secMessage[2]); 
    try { 
     String deaths = readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset()); 
     FileWriter write = new FileWriter("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt"); 
     int comb = Integer.parseInt(deaths) - subtract; 
     write.write(comb); 
     write.close(); 
     sendMessage(channel, "Death count updated to " + comb); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} catch (NumberFormatException e) { 
    e.printStackTrace(); 
    sendMessage(channel, "Please use numbers to modify death count"); 
} 

EDIT: Так как он был задан вопрос, вот мой ReadFile сообщение:

static String readFile(String path, Charset encoding) throws IOException { 
    byte[] encoded = Files.readAllBytes(Paths.get(path)); 
    return new String(encoded, encoding); 
} 

Я уже проверил его и возвращает содержимое без ошибок.

EDIT2: Проводка метода readFile заставила меня задуматься над чем-то, чтобы попробовать, поэтому я удалил его (код выше также обновлен) и попробовал его снова. Теперь он записывает файл, но не пишет то, что я хочу. Новый вопрос будет сделан для этого.

+1

Что делает 'readFile (...)' do? Я не думаю, что ваш размещенный код и текст достаточны, чтобы мы могли понять вашу проблему достаточно, чтобы ответить на нее. Если вы не получите достойный ответ в ближайшее время, подумайте о создании и публикации [Минимальной, полной и проверенной примерной программы] (http://stackoverflow.com/help/mcve). –

+1

Пожалуйста, не перекладывайте свои требования на нас. На ваш вопрос был дан ответ, и вы должны принять первое правильное решение. У вас теперь есть новая проблема, и это должно быть частью нового отдельного вопроса. –

+0

О, ладно, извините. Тогда я это сделаю. – Samboni

ответ

2
FileWriter write = new FileWriter(readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset())); 

Вы пытаетесь записать файл с именем deaths.txt. Возможно, вы намерены писать в файл.

+0

Я пытаюсь перезаписать содержимое, чтобы новый номер, хранящийся в текстовом файле, отображался на счетчике смерти, который использует этот файл. – Samboni

+0

Теперь я понимаю, что вы имели в виду. Код был изменен, и вопрос изменился, чтобы спросить о возникшей новой проблеме. – Samboni

0

От http://docs.oracle.com/javase/7/docs/api/java/io/FileWriter.html

FileWriter (String FileName) конструирует объект FileWriter данное имя файла.

FileWriter write = new FileWriter(readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset())); 

В настоящее время вы используете содержимое файла вместо имени файла.

+0

Каков результат этого? int subtract = Integer.parseInt (secMessage [2]); – MeowMeow

+0

То есть, чтобы включить раздел сообщения, полученного в чате, в переменную int вместо переменной String, таким образом ее можно вычесть из числа, полученного из текстового файла. – Samboni

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