FileWriter, PrintWriter und wie sie alle heißen.

Status
Nicht offen für weitere Antworten.

don

Mitglied
Guten Tag,

Ich versuche in meiner Anwendung Text in ein File-Objekt zu schreiben (es muß also nicht real auf der Platte existieren), und dieses Objekt anschließend per putNextEntry in ein TAR zu schreiben.
Soweit so gut, das Objekt wird erzeugt, es wird auch dem TAR hinzugefügt und via FTP upgeloaded. NUR: in der Datei steht nichts drin !?!

Ich werde das Ganze mal mit Code untermauern:
Code:
 /*...*/ // Hier der Code wo ich nicht weiterkomm....
 PrintWriter ps = null;
 File ProjectIdentifier = new File("projectidentifier.txt"); // Name des Textfiles
 try {
   ps = new PrintWriter(ProjectIdentifier);
   ps.println("TEST TEST TEST"); // String für die Textdatei
 } 
 catch ( IOException e ) { 
    System.err.println( "Konnte Datei nicht erstellen" ); 
 } 
 finally { 
    if ( ps != null ) 
        ps.flush(); 
        ps.close();
 }
            
 TarEntry tarUserIdentification = new TarEntry(ProjectIdentifier); // TarEntry braucht FILE
 tos.putNextEntry(tarUserIdentification);            
 tos.close();
 /*...*/ // Restlicher Code, uninteressant
Beim Entpacken des TAR-Files ist tatsächlich eine Datei "projectidentifier.txt" angelegt, Nur leider ist diese leer. Ich habe auch schon FileWriter() ausprobiert, mit gleichem Ergebnis.
Für ein wenig Hilfe wäre ich sehr dankbar, auch ein kleiner Schubs in die richtige Richtung wäre toll...

Also, schon jetzt mal danke....
 

thE_29

Top Contributor
Vielleicht liegt die datei in irgendeinem Unterverzeichnis?!

Du gibts ja keinen direkten Pfad an!
 

Leroy42

Top Contributor
Code:
finally { 
    if ( ps != null ) 
        ps.flush(); 
        ps.close(); 
}

Die if-Anweisung bezieht sich nur auf den flush-Teil,
aber das hat mit deinem Problem, glaube ich, nichts zu tun. ???:L
 

don

Mitglied
Ich möchte die Datei ja auch nicht speichern, mir reicht es, wenn sie in das TAR-Archiv mit eingebaut wird, danach kann sie auch gelöscht werden.
HINTERGRUND: Meine Anwendung läuft als Applet und wird sowohl von Unix- als auch von Windows-Usern benutzt. Die erstellte Datei wird anschließend in ein schon vorher erstelltes TAR gepackt und per FTP an einen Server übertragen. Die Datei selbst ist im TAR vorhanden, mein Problem ist, daß das Textfile LEER ist.

Oder verstehe ich Dich jetzt falsch??
 

don

Mitglied
Leroy42 hat gesagt.:
Die if-Anweisung bezieht sich nur auf den flush-Teil,
aber das hat mit deinem Problem, glaube ich, nichts zu tun. ???:L

Die Klammer habe ich ausgebessert, danke. Hatte aber keine Auswirkung.
 

thE_29

Top Contributor
Ein close macht sowieso ein flush auch, also wäre es egal!

Und du MUSST die Datei wo speichern, oder woher soll er sich die Datei zusammenbauen?!?!

Ich glaube noch immer, das du beim reinpacken einfach auf eine leere/nicht existierende Datei zeigst und nicht auf die, die du mit dem String befüllt hast!
 

Leroy42

Top Contributor
API hat gesagt.:
public void putNextEntry(ZipEntry e)
throws IOException
Begins writing a new ZIP file entry and positions the stream to the start of the entry data.

Die Datei wird nur auf den Start der Daten positioniert.

Ich vermute mal, das du die reinen Daten dann selbst noch hineinschreiben mußt.
 

don

Mitglied
PROBLEM SOLVED

@thE_29: Das Flush habe ich rausgenommen.
Es wird anscheinend trotzdem eine Datei angelegt im "user.dir", obwohl ich das nicht explizit sage.

@Leroy42: Tatsächlich war der Knackpunkt der tarEntry. Ich habe lediglich den Anfang der Datei geschrieben, ohne zusätzlich Informationen nachzuschicken. Desweiteren mußte ich zum schreiben einen neuen Stream öffnen und diesen zusätzlich ins TAR schreiben.

Um das zu veranschaulichen, hier nochmal der aktuelle funktionierende Code:
Code:
/*...*/ 
PrintWriter ps = null;
 File ProjectIdentifier = new File("projectidentifier.txt");         
 try {
   ps = new PrintWriter(ProjectIdentifier);
   ps.println("Name1"); 
 } 
 catch ( IOException e ) { 
    System.err.println( "Konnte Datei nicht erstellen" ); 
 } 
 finally { 
    if ( ps != null ) 
        ps.close();
 }
 
 TarEntry tarUserIdentification = new TarEntry(ProjectIdentifier);
 tarUserIdentification.setSize(ProjectIdentifier.length());
 tarUserIdentification.setUSTarFormat(); // Entspricht TAR2 mit einer Länge von 155 Zeichen anstatt nur 100
 
 FileInputStream fin = new FileInputStream(ProjectIdentifier);
 BufferedInputStream in = new BufferedInputStream(fin);
         
 tos.putNextEntry(tarUserIdentification);
 //Read bytes from the file and write into the Tar.
 byte[] buf = new byte[1024];
 int len;
 while( (len= in.read(buf)) != -1 )
    tos.write(buf,0,len);
 //Close the input stream.
 in.close();
 //Close this entry in the Tar stream.
 tos.closeEntry();
 tos.close();
/*...*/

Erstmal vielen Dank an Euch beide für die schnelle und gute Hilfe. Ich habe den Code so lange zerpflückt, daß ich eigentlich keine Ahnung von nichts mehr hatte, und auch keine Lust mehr. Aber irgendwie gehts dann doch weiter...
 

Leroy42

Top Contributor
Dann kannst du ja auf deine ProjectIdentifier - Datei
vollständig verzichten und nur in das tar-File schreiben.
 

don

Mitglied
Hmmm..., aber TarEntry tarUserIdentification = new TarEntry(ProjectIdentifier); BRAUCHT ProjectIdentifier vom Typ FILE. Das bedeutet für mich, ich muß ein FILE-Objekt anlegen... oder?
 

thE_29

Top Contributor
Das mit dem user.dir ist eine default Einstellung von File!

Normalerweise nimmt er aber das aktuelle Verzeichnis und legt das File dort an, wenn explizit kein Pfad steht!

Und zu dem ProjectIdentifier, leg halt ein neues File Objekt an (welches dann dien Tar File ist)
 

Leroy42

Top Contributor
thE_29 hat gesagt.:
leg halt ein neues File Objekt an (welches dann dien Tar File ist)

Stimmt ja :shock: *händeüberkopfzusammenschlag*

Einem File - Objekt muß ja kein real existierendes File zugeordnet sein.

Code:
new File("SoHeißeIchJetzt");

reicht ja vollkommen aus. :D
 

don

Mitglied
Ich kapiers ja theoretisch, aber was im Code sollte ich diesbezüglich abändern?
Das tar-Archiv besteht schon, mit TarEntry füge ich nur einen neuen Eintrag hinzu.
Wenn ich einfach
Code:
/* File ProjektIdentifier = */ new File("projektidentifier.txt");
schreibe, dann habe ich für TarEntry kein File-Objekt mehr.

Momentchen... :### ... Ne, ich will es nicht verstehen...
 

thE_29

Top Contributor
Naja, wenn dein Tar File schon existiert, dann nimm das halt!

Und schau obs im Konstruktor, so einen Art "append" gibt, sodaß er es einfach dazufügt!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S FileWriter PrintWriter Allgemeine Java-Themen 5
KaffeeFan FileWriter nur leere Zeilen beschreiben Allgemeine Java-Themen 3
A Swing FileWriter schreibt keine Daten in Datei Allgemeine Java-Themen 13
L Filewriter schreibt Zahlen in Textdatei Allgemeine Java-Themen 2
R Encoding FileWriter Allgemeine Java-Themen 1
K FileWriter / FileReader Allgemeine Java-Themen 12
B FileWriter / FileReader testen / Mock-Objekt für Unit Tests? Allgemeine Java-Themen 6
G Mit FileWriter in Textdatei über jar Allgemeine Java-Themen 4
V FileWriter und Zahlen (Kein Problem, nur Verständnisfrage) Allgemeine Java-Themen 4
I Filewriter ignoriert Zeilenumbrüche Allgemeine Java-Themen 4
E Umlaute: FileWriter vs. FileOutputStream Allgemeine Java-Themen 3
C FileWriter zu laaaaaaaaaaaam Allgemeine Java-Themen 16
V Unterschied FileOutputStream und FileWriter? Allgemeine Java-Themen 8
H Frage zu FileWriter Allgemeine Java-Themen 12
S Problem!FileWriter Allgemeine Java-Themen 3
H Dateien lesen und schreiben mit Filereader und Filewriter Allgemeine Java-Themen 2
G Problem mit FileWriter Allgemeine Java-Themen 7
H Mit filewriter farbigen text schreiben? Allgemeine Java-Themen 7
G Mit FileWriter Zeilenumbruch schreiben Allgemeine Java-Themen 8
G String an Arduino senden NullPointerException in PrintWriter Allgemeine Java-Themen 6
S PrintWriter.println() schreibt mehrere Zeilen Allgemeine Java-Themen 19
S BufferedReader/PrintWriter an einer HTML Allgemeine Java-Themen 6
H PrintWriter Dateiaufnahme Allgemeine Java-Themen 3
Developer_X Problem mit PrintWriter Allgemeine Java-Themen 6
Daniel_L JavaBib und PrintWriter - BibTex-Datei schreiben Allgemeine Java-Themen 4
G PrintWriter in .jar erstellt keine Datei Allgemeine Java-Themen 4
G Leere Datei mit PrintWriter trotz flush und close Allgemeine Java-Themen 8
W PrintWriter (PrintStream) sendet falsche Werte Allgemeine Java-Themen 18
S PrintWriter und später in der Jar? Allgemeine Java-Themen 5
S Objekte ein- und auslesen PrintWriter Allgemeine Java-Themen 6
Zrebna Wie ermittelt man alle testbaren (zu testenden) Klassen in seinem Maven-Projekt? Allgemeine Java-Themen 23
_user_q Alle Kombinationen von "0000" bis "FFFF" kompakt schrieben Allgemeine Java-Themen 13
_user_q JavaFX Robot alle Unicode-Zeichen schreiben lassen können Allgemeine Java-Themen 12
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
Sachinbhatt Sind alle Methoden in Java implizit virtuell Allgemeine Java-Themen 2
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
8u3631984 Generelle Log4j.xml für alle Module Allgemeine Java-Themen 5
L Farbverlauf RGB alle Farben Allgemeine Java-Themen 28
W Server-Thread schreibt nicht alle Dateien Allgemeine Java-Themen 6
S Alle Dateinamen ermitteln Allgemeine Java-Themen 22
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
S Kann ich eine Methode schreiben die alle Arten von funktionalen Interfaces akzeptiert..? Allgemeine Java-Themen 21
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
MaxG. Best Practice Alle Kombinationen berechnen Allgemeine Java-Themen 3
J Best Practice Objekt an alle Klassen verteilen ( Discord Bot ) Allgemeine Java-Themen 7
C BufferedReader/BufferedWriter schreibt nicht alle Bytes Allgemeine Java-Themen 2
J Alle Unit Tests in Maven Modul Projekt ausführen Allgemeine Java-Themen 7
S Anwendung die alle Abhaengigkeiten einer Library listet..? Allgemeine Java-Themen 5
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
K Nicht alle class-Dateien im JRE? Allgemeine Java-Themen 2
I Alle logs von Logger bekommen Allgemeine Java-Themen 3
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
K Classpath Alle Classen aus einem Package lesen Allgemeine Java-Themen 7
L Alle möglichen Additionen (Rekursiv) Allgemeine Java-Themen 3
KaffeeFan Methoden replace alle Buchstaben Allgemeine Java-Themen 3
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5
Z Eclipse hängt sich alle paar Sekunden auf (Keine Rückmeldung). Allgemeine Java-Themen 4
Seikuassi Alle Escape-Sequenzen in einem String ersetzen Allgemeine Java-Themen 4
F Java Spintax: Alle Kombinationen Erzeugen Allgemeine Java-Themen 2
Sogomn Klassen Alle in eine Klasse Allgemeine Java-Themen 11
P Methoden Alle Kombinationen aus 2 Karten berechnen Allgemeine Java-Themen 2
B Threads Barrier mit wait()/notify() aber nicht alle Prozesse terminieren Allgemeine Java-Themen 2
S .jar hat nicht alle Klassen ??? Allgemeine Java-Themen 10
T Wie kann ich alle existierenden Java-Klassen anzeigen lassen? Allgemeine Java-Themen 10
M Zufälligen String generieren und alle 5 Minuten ändern Allgemeine Java-Themen 2
M RegEx alle Matches ausgeben Allgemeine Java-Themen 5
A Applet Alle Threads beim schließen des Applets beenden Allgemeine Java-Themen 8
C SwingWorker.cancle(true) tötet alle Worker Allgemeine Java-Themen 3
B Methoden Alle Methoden und Variablen aus Java-Dateien auslesen. Allgemeine Java-Themen 7
T Alle Instancen einer Klasse auflisten Allgemeine Java-Themen 13
S Programm das alle aufgerufenen Methoden ausgibt..? Allgemeine Java-Themen 6
S Alle Kombinationen aus ArrayList - Potenzmenge Allgemeine Java-Themen 7
D Alle Variablen final setzen ? Allgemeine Java-Themen 26
brunothg Alle Kombiationen von n Ziffern Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
B Variablen Alle RenderingHints.Keys (KEY_*) in Array + alle RenderingHints.Keys (VALUE_*) in Object[] Allgemeine Java-Themen 8
D generische Klasse für alle Maps (nicht Collections :-)) Allgemeine Java-Themen 11
E Logger loggt nicht alle Level Allgemeine Java-Themen 2
S Aus einer Liste<Oberklasse> alle Elemente die eine bestimmte Unterklasse von Oberklasse haben filter Allgemeine Java-Themen 8
K String: alle X Zeichen Zeilenumbruch Allgemeine Java-Themen 3
F Alle Exceptions abfangen Allgemeine Java-Themen 4
nrg JS als ScriptEngine - alle Punkte ersetzen Allgemeine Java-Themen 4
A Bildschirmauflösung geändert - alle Bildschirminhalte verschoben - was tun? Allgemeine Java-Themen 7
C Alle Klassen eines Packages lesen und instanzieren? Allgemeine Java-Themen 9
B Alle Exceptions auf einmal abfangen Allgemeine Java-Themen 4
S Warum packt er nicht alle Dateien? Allgemeine Java-Themen 13
J Alle Tage eines Jahres Allgemeine Java-Themen 2
AlexSpritze Alle Domains oder FQDN von einem Server erfragen? Allgemeine Java-Themen 2
Spot84 alle kombinationen einer string arraylist Allgemeine Java-Themen 2
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
J Konstrukt um alle Paare und Tripel einer Punkte-Menge bilden Allgemeine Java-Themen 12
B Alle möglichen Buchstabenkombinationen in einem String Allgemeine Java-Themen 7
P alle zusammanhaengenden teilgraphen Allgemeine Java-Themen 7
A alle nicht-dplikate finden Allgemeine Java-Themen 14
M Wie kann ich alle System.out Strings in ein log window umleiten? Allgemeine Java-Themen 6
E Alle unter Prozesse der beim schließen mit schließen Allgemeine Java-Themen 3
A An alle Cracks: Anwendung beenden mit ShutdownHook? Allgemeine Java-Themen 13
J Logger gibt nicht alle Level aus Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben