2016-04-09 2 views
1

Что бы я ни сделал, я не писал новые данные в новой строке в файле. Как я могу это исправить?Я не могу написать данные по новой строке в файле

Для балла Пример Марии является 100 и оценка кузнеца составляет 150, а в текстовом файле это

mary 100smith 150 

Я хочу smith 150 в новой строке

public class HighScores { 
public HighScores(){ 

    String txt = ""; 
    Scanner sc = null; 
    PrintWriter pw = null; 
    File Checker = null; 
    try{ 
     Checker = new File("highScores.txt"); 
     if(!Checker.exists()){ 
      Checker.createNewFile(); 
     } 


sc = new Scanner(new File("highScores.txt")); 
     while(sc.hasNextLine()){ 
      txt = txt.concat(sc.nextLine()+"\n"); 
     } 

     String score=String.valueOf(Game3.score); 
     String name = NewPlayer.name; 

     txt = txt.concat(name + " "+ score +"\n"); 
     pw = new PrintWriter(Checker);// writing the checker 
     pw.write(txt +"\r\n"); 

pw.println() дает та же проблема.

}catch(FileNotFoundException fnfe){ 

     fnfe.printStackTrace(); 
    }catch(IOException ioe){ 
     ioe.printStackTrace(); 
    }finally{ 
     sc.close(); 
     pw.close(); 
    } 

} 

} 
+1

Не используйте CONCAT() и жесткий код '\ n'or' \ г \ n'. Откройте PrintWriter и используйте println(), чтобы написать текст, за которым следует EOL, или print(), чтобы написать текст, за которым не следует EOL. И уважайте соглашения об именах Java: переменные начинаются с строчной буквы. –

+0

Я использовал println, но опять же данные не были в новой строке – hekinci

+0

Невозможно изменить весь свой код и написать этот новый комментарий менее чем за 1 минуту. Повторно прочитайте мой комментарий. –

ответ

0

Код является изворотливым, но на самом деле должен делать то, что вы ожидаете от него.

Возможно, вы просматриваете полученный файл с помощью приложения для нот Windows. Он ожидает "\r\n" как разделитель новой строки, как и большинство других приложений Windows.

+0

Нет, я просматриваю полученный файл с помощью JCreator. – hekinci

+0

Это все еще может быть причиной =) Попробуйте вывести 'txt' в' System.out', чтобы увидеть, действительно ли новые строки написаны и если они есть. попробуйте изменить разделители строк на '\ r \ n'. – ThatDamnRusski

0

Используйте следующий код

public class HighScores { 
public HighScores() { 
    String txt = ""; 
    Scanner sc = null; 
    PrintWriter pw = null; 
    File Checker = null; 
    try { 
     Checker = new File("highScores.txt"); 
     if (!Checker.exists()) { 
      Checker.createNewFile(); 
     } 

     sc = new Scanner(new File("highScores.txt")); 
     while (sc.hasNextLine()) { 
      txt = txt.concat(sc.nextLine() + "\n"); 
     } 

     String score = String.valueOf(Game3.score); 
     String name = NewPlayer.name; 

     txt = txt + name + " " + score; 
     pw = new PrintWriter(Checker);// writing the checker 

     pw.println(txt); 
    } catch (FileNotFoundException fnfe) { 

     fnfe.printStackTrace(); 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
    } finally { 
     sc.close(); 
     pw.close(); 
    } 
} 

}

+0

Часть 'exist()/createNewFile()' бессмысленна, как обычно, и простой код здесь не является ответом. Вы должны объяснить, – EJP