Ausgabe mit BufferedWriter exakt untereinander anordnen

Status
Nicht offen für weitere Antworten.

julchen81

Bekanntes Mitglied
Hallo,

ich schreibe mit Hilfe eines BufferdWriters bw Strings aus einem String[][] array in eine Datei ziel.txt, z.B.
bw.write(array[l][0] + "=" + array[l][1] + "\t\t" + array[l][3] +"\n");

Jetzt möchte ich, dass in ziel.txt die Einträge aus der dritten Spalte exakt untereinander stehen. Da aber die Einträge in Spalte 0 und Spalte 1 unterschiedliche Längen haben, kann es sein, dass array[l][3] um einen Tab nach rechts oder links verschoben wird.

Wie könnte ich das am geschicktesten lösen?

Habe schon daran gedacht, eine Länge (z.B. 40) festzulegen.
Dann ziehe ich von diesen 40 die Längen der Einträge in Spalte 0 und 1 ab.
Anschließend erzeuge ich einen String s mit dieser Restlänge, bestehend nur aus Leerzeichen.
Und bw.write würde dann so aussehen:
bw.write(array[l][0] + "=" + array[l][1] + s + array[l][3] +"\n");

Aber das finde ich sehr umständlich, und ist es dann nicht so, dass - je nach dem mit welchem Programm ich mein ziel.txt öffne - die Breite einzelner Zeichen unterschiedlich ist. Also dass z.B. ein " " schmaler als ein "o" ist. Und somit würde meine dritte Spalte wieder nicht schön untereinaner angeordnet.

Wer bitte wüßte einen besseren Ansatz? :bahnhof:

LG Julia
 
speichere deine Datei in einem bestimmten Format (z. B. html oder pdf) ab, dann kannst du auch davon ausgehen, dass es so angezeigt wird, wie du es gerne hättest. Ansosnten ist das nicht möglich.
 
hmmm.... ok, danke.

Das Problem ist, dass ich das nicht bestimmen darf, in welchem Format ich die Zieldatei speichere. Mist.

LG Julia
 
Die Frage, ob die Zeichen die gleiche Breite haben, hängt davon ab, welche Schriftart in dem Programm verwendet wird. ("Monospaced" wie etwa "Courier New" oder mit "variabler Breite", wie bei TimesNewRoman oder so...)

Diese exakte Ausrichtung untereinander ist eigentlich nur mit TABs möglich, aber selbst DIE können ja bei dem Programm, das die Datei öffnet, beliebig eingestellt sein. Vermutlich(!) wäre das, was du da mit dem "Leerzeichen-String" gemacht hast, noch am sinnvollsten. Evtl. kann man das aber auch einfacher erreichen - kannst dir mal die Methode "format" in der Klasse "String" ansehen...
 
ich weiß, aber ich benutze schon Java 1.6

hatte mit Google einfach nach der API gesucht und die erste genommen ohne genauer nachzusehen, ob das auch die passende ist. Auf die Idee, dass es u.U. entscheidende Unterschiede gibt, wäre ich nicht gekommen.

Danke für den Hinweis!
 
Naja ohne entscheidende Unterscheidungen wären verschiedene Version irgendwie sinnlos, oder?! ;-)

Aba guckst du für solche Fälle steht die API (die ich verwende 😛 ) in meinen Favoriten 🙂

Und naja. Man kann ja au erst ma kurz in der IDE nachschaun, ob sowas wie String.f... gibt 😛

So genug fertig gemacht ^^ Sonst alles klar mit dem formatter? Also ich find den verwirrend, aba hab en mir au noch ned soo genau angeschaut ^^ Naja. Viel Spaß damit. Jetzt wird mittag gemacht :-D
 
fertig machen kannst mich nimma, das hat mein Programm schon erledigt ;-)

den formater find ich auch verwirrend; ich hab das jetzt erstmal beiseite gestellt. Muss am Freitag mein Programm abgeben und märze bis dahin noch Schönheitsfehler aus. Wenn noch Zeit bleibt, befasse ich mich noch mal mit format():

Schönen Abend noch...
Julia
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben