2013-08-31 25 views
23

Zrobiłem mały plik pisarz:Java: FileWriter: Tworzenie nowej linii

try { 
     FileWriter writer = new FileWriter(new File("file.txt"), false); 
     try { 
      String sizeX = jTextField1.getText(); 
      String sizeY = jTextField2.getText(); 
      writer.write(sizeX); 
      writer.write(sizeY); 
      writer.flush(); 
      writer.close(); 
     } catch (NumberFormatException e) { 
     } 
    } catch (IOException ex) { 
    } 

Teraz chcę zrobić nową linię, jak można to zrobić z „\ n” normalnie, ale to nie działa ...

Czy ktoś wie, jak zrobić taką nową linię?

Z góry dziękuję! :)

+0

'writer.write (" \ n ");' –

+1

'ale wygląda na to, że nie działa 'możesz publikować wyniki? – Pshemo

+1

Jeśli spróbuję metody "\ n", nie ma nic ... tylko 1254 (12 dla rozmiaruX, 54 dla rozmiaruY) ... – lukulus

Odpowiedz

43

Jeśli chcesz uzyskać nowa linia znaki użyte w obecnym OS jak \r\n dla Windows, można je dostać za

  • System.getProperty("line.separator");
  • od Java7 System.lineSeparator()
  • lub jak wspomniano przez Stewarta generować je przez String.format("%n");

Można również użyć PrintStream i jego println metodę, która doda separator linii zależny OS na końcu łańcucha automatycznie

PrintStream fileStream = new PrintStream(new File("file.txt")); 
fileStream.println("your data"); 
//   ^^^^^^^ will add OS line separator after data 

(BTW System.out jest również wystąpienie PrintStream).

5

Spróbuj owijając swoje FileWriter w sposób BufferedWriter:

BufferedWriter bw = new BufferedWriter(writer); 
bw.newLine(); 

Javadocs dla BufferedWriter here.

19

Spróbuj System.getProperty("line.separator")

writer.write(System.getProperty("line.separator")); 
0

chciałbym rozwiązać problem tak:

BufferedWriter output; 
    output = new BufferedWriter(new FileWriter("file.txt", true)); 
    String sizeX = jTextField1.getText(); 
    String sizeY = jTextField2.getText(); 
    output.append(sizeX); 
    output.append(sizeY); 
    output.newLine(); 
    output.close(); 

Prawdziwy w konstruktorze FileWriter pozwala dołączyć.
Metoda newLine() jest dostarczana przez BufferedWriter
Może być ok jako rozwiązanie?

1

Jeśli masz na myśli użycie tego samego kodu, ale dodaj nową linię, aby po dodaniu czegoś do pliku znalazła się w nowym wierszu. Możesz po prostu użyć BufferedWriter's newLine().
Tutaj również poprawiłem twój kod: NumberFormatException był niepotrzebny, ponieważ nic nie było rzutowane na typ danych liczbowych, więc zapisywanie zmiennych do użycia również było.

try { 
    BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt")); 
     writer.write(jTextField1.getText()); 
     writer.write(jTextField2.getText()); 
     writer.newLine(); 
     writer.flush(); 
     writer.close(); 
} catch (IOException ex) { 
    System.out.println("File could not be created"); 
} 
0

Tutaj "\ n" również działa poprawnie. Ale problem leży w edytorze tekstu (prawdopodobnie w notatniku). Spróbuj wyświetlić dane wyjściowe za pomocą programu Wordpad.

+0

Inteligentny! Pracował dla mnie i powinien pracować dla zadań. Jednak w przypadku projektu należy zastosować jedno z wyżej wskazanych podejść –

4

Od 1,8, myślałem, że to może być dodatkowym rozwiązaniem warto dodać do odpowiedzi:

Path java.nio.file.Files.write (path Ścieżka, iterable linie OpenOption ... Opcje) wyrzuca IOException

StringBuilder sb = new StringBuilder(); 
sb.append(jTextField1.getText()); 
sb.append(jTextField2.getText()); 
sb.append(System.lineSeparator()); 
Files.write(Paths.get("file.txt"), sb.toString().getBytes()); 

Jeśli dołączenie do tego samego pliku, może użyć flagi Dołącz z Files.write()

Files.write(Paths.get("file.txt"), sb.toString().getBytes(), StandardOpenOption.APPEND);