Warum Umleitungsoperatoren von Windows-Eingabeaufforderung aus Text erstellen und Zeilenumbruch ignorieren?

462
Lucas Souza

Ich habe versucht, mithilfe von Umleitungsoperatoren > and >>aus einer Java-Klasse eine Textdatei auszugeben, jedoch wird der Zeilenvorschub \nvon Java ignoriert, wenn die TXT- Datei mit dem Notepad von Windows 10 geöffnet wird . Es ist interessant, weil der Zeilenvorschub auf der Eingabeaufforderung einwandfrei funktioniert und wenn Ich benutze System.out.println("")es normal im Editor .

Klasse mit \nZeilenvorschub:

class n{  public static void main(String[] args){  System.out.print("This\n"); System.out.print("Should\n"); System.out.print("Be\n"); System.out.print("Separated.\n");   }  } 

Klasse mit System.out.println(""):

class ln{  public static void main(String[] args){  System.out.println("This"); System.out.println("Should"); System.out.println("Be"); System.out.println("Separated.");  }  } 

Ausgabe in der Eingabeaufforderung :

Prompt

Ausgabe in Textdatei der Klasse n ( n.txt ), die mit Notepad geöffnet wurde :

ThisShouldBeSeparated. 

Ausgabe in Textdatei aus der Klasse ln ( ln.txt ), die mit Notepad geöffnet wurde :

This Should Be Separated. 

Diese beiden oben sollten gleich sein.

Ich habe mit der Klasse n public getestet, aber das Ergebnis wurde nicht geändert.

Ich habe nach echoeinem Zeilenvorschub gesucht und gefunden, das ist nicht das, was ich will, ich möchte, dass die umgeleitete Textdatei wie die Eingabeaufforderung funktioniert .

Ein interessantes Detail ist, wenn ich den Text aus n.txt hier einfüge ( eine Frage schreibe ), in Microsoft Word, Notepad ++ oder WordPad ( oder die Datei in den zitierten Programmen öffnen ), wurde der Fehler "behoben" und das Ergebnis war gleich aus der Klasse l .

BEARBEITEN

Ich denke, es ist kein Duplikat, denn als ich die Frage schrieb, habe ich nicht einmal an das mögliche Notepad- Problem gedacht . Der Titel ist völlig anders. Ich beantwortete meine eigene Frage für Leute, die nicht der Meinung waren, dass das Problem der Notizblock ist, wie ich zuvor, und es könnte eine gute Lösung geben.

Wenn ich falsch liege, würde ich mich freuen, korrigiert zu werden.

0
Ich habe die Fragen und Antworten gepostet, obwohl ich die Lösung während des Schreibens der Frage entdeckte, weil ich zunächst nicht einmal geschrieben hatte, dass _Notepad_ verwendet wurde, weil ich sicher war, dass das Problem im _prompt_ lag. Ich denke, andere können die gleichen Probleme haben und Schwierigkeiten haben, die Lösung dafür zu finden. Lucas Souza vor 7 Jahren 0
Fragen zu Java-Programmierproblemen sind für SU nicht selbstverständlich, und das Problem "Meine Textdatei zeigt keine Zeilenumbrüche in Notepad" wurde bereits behandelt (wie Sie bereits erwähnt haben). Abstimmung zum Schließen Ƭᴇcʜιᴇ007 vor 7 Jahren 0
@ Ƭᴇcʜιᴇ007 Ich halte das Q & A aufrecht, da ich nicht über das möglicherweise im _Notepad_ auftretende Problem nachgedacht habe und ich denke, dass andere Leute denken könnten, dass das Problem im _prompt_ und nicht im _Notepad_ liegt wie ich. Wenn dies nicht ausreicht, um diese Frage von den "_Notepad_ ignorieren von Zeilenumbrüchen" zu unterscheiden, bin ich froh, sie zu löschen. Lucas Souza vor 7 Jahren 0
Du hast recht, doppelte Fragen mit ausreichend unterschiedlichen Formulierungen können hilfreich sein, um Leute an den richtigen Ort zu bringen. Daher sollte diese Frage beibehalten, aber als doppelt markiert bleiben. Ben N vor 7 Jahren 1

1 Antwort auf die Frage

0
Lucas Souza

Während ich mehr über Zeilenvorschub und Textdateien suchte, fand ich hier in der Superuser- Community eine Frage, in der erklärt wurde, was passiert.

Das Problem ist kein De- Prompt, der Notepad von Windows ( in meinem Fall Windows 10, im Falle des Autors der anderen Frage Windows 7 ), der diese Art von Zeilenvorschub nicht erkennt und @Paul zitiert, der die Frage beantwortet hat Ich rede von:

Notepad erkennt nur CR, LF (0x0d, 0x0a), während andere Quellen nur CR oder nur LF verwenden.

Jetzt empfehle ich, WordPad oder NotePad ++ als ersten Texteditor zu verwenden, die normal funktionieren.

Im Merkzettel :

Notizblock

In Notepad ++ und WordPad :

NotePad ++ WordPad

Eine andere mögliche Lösung besteht darin, den Text aus dem Editor zu kopieren, in Notepad ++, WordPad, Microsoft Word oder einen beliebigen Texteditor einzufügen, der diese Art von Zeilenumbruch erkennt, und ihn anschließend zurück zu kopieren.

Weitere Informationen finden Sie unter "Notizblock ignoriert Zeilenumbrüche" .

Das Problem ist eigentlich, dass Sie falsche Zeilenumbrüche generieren. Sie programmieren Unix-Zeilenumbrüche (nur ein "Zeilenvorschub" / LF-Zeichen, ASCII-Code 10, "\ n" in Java), während DOS und Windows CR / LF verwenden (zwei Zeichen, ein "Carriage Return", ASCII-Code 13, Escape-Sequenz "\ r" und ein LF-Zeichen). In der folgenden Frage erfahren Sie, wie Sie die richtigen Newline-Zeichen für Ihr Betriebssystem verwenden: https://stackoverflow.com/questions/207947/how-do-i-get-a-platform-unabhängig-new-line-character Gunter Ohrner vor 5 Jahren 0