Input/Output Zeilenumbrüche beim exportieren in eine Textfile

T3rr0rZw3rg

Mitglied
Hi,
ich habe folgendes Problem:

Mein Progrämmchen soll den Inhalt eines int Array in eine Textfile speichern.

zb.
int[0] = 1
int[1] = 2
int[2] = 3
int[3] = 4
int[4] = 5
.
.
.

dann soll in der Textfile stehen:
1
2
3
4
5
.
.
.

Mein Programm schreibt es aber wie folgt:
12345...

wie bekomme ich also die Zeilenumbrüche?

Code:

Java:
public static void export(int[] a){
    	String path = "...path.../Test.txt";
        String arrayString = "";
    	
        for (int i = 0; i < a.length ; i++)
            arrayString = arrayString + "\n" + a[i];
        
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter(path));
            out.write(arrayString);
            out.close();
        } catch (IOException e) {
        }
    }

lg
 
Probiere mal "\n" mit System.getProperty("line.separator") zu ersetzen.

System.getProperty("line.separator") liefert Dir in Abhängigkeit vom System das Zeilenumbruchzeichen.
 
alternativ kannste auch einfach

Java:
out.write("Hallo");
out.newLine(); 
out.write("Welt");

verwenden, da kümmert sich Java um den Seperatortyp (je nach Platform), so fern ich das noch richtig im kopf habe 😉.
 
@ Ulathar: das geht leider nicht, da bei mir nur ein einziger String ausgegeben wird und der die newlines bereits haben sollte...

@Foo: nette idee aber geht auch net ganz
ich bekommen nun
1null2null3null4null5null....

Btw mein intArray ist ca. 100000 Felder groß (evtl nützt die info ja was >.<)

(hier code zum Vergleich dass ich keinen Mist gebaut habe oder so)
Java:
    public static void export(int[] a){
    	String path = "c:/users/Andi/Desktop/Delta.txt";
        String arrayString = "";
    	
        for (int i = 0; i < a.length ; i++)
            arrayString = arrayString + System.getProperty("Line.seperator") + a[i];
        
        try {
            BufferedWriter out = new BufferedWriter(new FileWriter(path));
            out.write(arrayString);
            out.close();
        } catch (IOException e) {
        }
    }

Ps: Danke euch beiden für die schnelle Antwort!
 
wieso sollte es nich gehen?
statt dir in der for schleife den arraystring zu bauen, kannst du doch da direkt das "writen" machen.
oder ist es von der aufgabe vorgeschrieben das über den string zu lösen? falls ja, bleibt dir eigendlich nur noch der weg, den Foo bereits beschrieben hat.


darf man fragen auf was für nem OS du arbeitest? ich nutze selbst auch sehr oft den BufferedWriter und das fluppt eigendlich immer problemlos...
 
Code:
Line.seperator
=>
Code:
line.seperator
 
GOT IT

in meiner ersten Version einfach \n mit einem \r erweitern ---> \r\n

"The line separator is there; the problem is with the program you're using to view the text: Windows Notepad. Every other program in the world will accept any of the three most common line separators: "\n" (linefeed only), "\r" (carriage-return only), or "\r\n" (carriage-return + linefeed). But Notepad only recognizes "\r\n", the traditional line separator for DOS/Windows systems. Just use something other than Notepad to view the text, and don't worry about the line separators."

Die posts danach streiten dann noch darüber, ob es sich auf Notepad beschränkt, aber zumindest geht es jetzt 😀

lg und danke nochmal an die schnellen Antworten
 
@ Ulathar: ja schon, theoretisch gehts, aber wenn ich das so mache, dann habe ich 200000 Speicheraufrufe.
Wenn ich hingegen den String erst baue und dann geschlossen in die Textfile schreibe, passiert das String bauen im Arbeitsspeicher und somit is die Geschichte um einiges Performanter (wobei man für mein Problem sowie so kein Java sondern UNIX nehmen hätte können >.<)
Trotzdem Vielen Dank!

@ EikeB: Verdammt! ich hasse es, wenn es so ein Flüchtigkeitsfehler ist -.-
Ich denke es war einfach zu spät...
Vielen Dank!
 

Neue Themen


Zurück
Oben