2013-12-14 2 views
0

В моей предыдущей теме я забыл показать людям, что я попытался попробовать это сам, будьте уверены, я провел последние 2 часа, пытаясь решить эту тупую проблему.Загрузить и сохранить в txt файл

мне нужно сделать следующее:

  • Поиск файла с именем «file.txt», если нуль, то создайте его.
  • Прочитайте файл, чтобы найти целое число (должно быть единственным во всем файле)
  • Если число не существует, то создайте его и установить его на 1
  • Если он уже существует, то добавить 1 к нему и сохраните его снова
  • Откройте файл снова, получите целое число и распечатайте его на консоли.

Это, насколько мне удалось получить:

package science; 

import java.io.BufferedReader; 
import java.io.BufferedWriter; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.io.Reader; 

public class DumpData { 

    static void writeStringToFile(String gender, String securityLevel){ 
     try { 




      File file = new File(gender + securityLevel + ".txt"); 
      //file.getParentFile().mkdirs(); 

      PrintWriter pr = new PrintWriter(file); 

      FileInputStream fs = new FileInputStream(gender + securityLevel + ".txt"); 
      BufferedReader br = new BufferedReader(new InputStreamReader(fs)); 
      if (br.readLine() == null) { 
       pr.println("" + 0); 
      } 

      //String first = br.readLine(); 
      //System.out.println(first); 
      try{ 
       String first = br.readLine(); 
        int num = Integer.parseInt(first); 
        int add = (num + 1); 
        pr.println("" + add); 
        pr.close(); 
        System.out.println(num); 
       } catch (NumberFormatException e) { 
        // not an integer! 
        System.out.println("error"); 
        System.out.println(br.readLine()); 
       } 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Я постоянно получаю это сообщение «ошибка», выводимой на консоль, а также с большим количеством экзамена я обнаружил, что ничего не сохраняются в .txt файл вообще. Я полностью ожидал, что мой код добавит 1 к int в файл каждый раз, когда метод был выполнен.

+0

Изменить код вида 'поймать (Exception е) {..' для' поймать (Exception е) { e.printStackTrace(); // очень информативно! ..' –

+0

Попробуйте распечатать 'first', прежде чем разбирать его. Я предполагаю, что вы увидите, почему число не обрабатывается ... –

+0

Опубликуйте файл, который вы используете для этого примера. – Makky

ответ

1

Вы пытаетесь прочитать строку дважды

if (br.readLine() == null) {   <-- first time 
    pr.println("" + 0); 
} 

//String first = br.readLine(); 
//System.out.println(first); 
try{ 
    String first = br.readLine(); <-- second time 

Второй раз подведет, потому что это нет второй линии.

Вместо просто сделать это

String line; 
while ((line = br.readLine()) != null){ 
    int num = Integer.parseInt(line.trim()); 
    ... 
} 

Вам не нужно первое, если заявление

+0

Ваше предложение также читает две строки, когда есть только один. –

+0

Ха-ха, да, я заметил, что сразу, когда я получил голос –

+1

Теперь выглядит лучше. :) –

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