Zum Inhalt springen

RandomAccessFile


javaanfänger

Empfohlene Beiträge

Hi,

ich habe folgendes Problem. Ich hoffe mir kann einer helfen. Ich will mit dem RandomAccessFile ans Ende einer Datei was schreib. Das geht auch. Aber er macht bei meinem Strings nach jedem Buchstaben ein Leerzeichen. Woran liegt das?

Hier mein Quelltext:


String f= "ModusTest.txt";

RandomAccessFile output = null;
try
{
output = new RandomAccessFile(f,"rw");
output.seek(output.length());
output.writeChars(PropertyAuswahl.inhalt + "\n" );
}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kann mal jemand den Spaßvogel löschen oder zurechtweisen... :P

@javaanfänger

Du schreibst chars binär in eine Datei. Ein char belegt aber in Java 2 Bytes. Daher die Leerzeichen im Textmodus deines Editors. Wenn du Text in eine Datei schreiben willst, musst du aus dem String ein byte[] machen und dieses z.B. mit der Methode write in die Datei schreiben.

output.write(PropertyAuswahl.inhalt.getBytes());

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

wenn ich es mit der Zeile(output.write(PropertyAuswahl.inhalt.getBytes());)

in die Datei schreibe. Bekomme ich folgendes in der Datei angezeigt [][][][]J[][][][][][] die [] sollen Vierecke sein. Sorry aber vielleicht stehe ich gerade auf dem schlau. Kann mir bitte nochmal wer helfen. Außer die Witzbolde.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das ist die ganze Datei


import java.io.*;
import java.util.*;

class Speichern
{
PrintWriter pw;
public Speichern()
{
PropertyAuswahl.inhalt = (String) PropertyGui.auswahlcmb.getSelectedItem();

try
{
if (PropertyAuswahl.inhalt == "Modus")
{
String f= "ModusTest.txt";

RandomAccessFile output = null;
try
{
output = new RandomAccessFile(f,"rw");
output.seek(output.length());
//output.writeUTF(PropertyAuswahl.inhalt + "\n" ); * ohne Leerzeichen aber mit andere Zeichen
//output.writeChars(i + "\n" );
output.write(s.getBytes());
}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}
}
else
{
if (PropertyAuswahl.inhalt == "Ergebnistyp")
{
String f= "ErgebnistypTest.txt";
System.out.println(Hinzufuegen.vspeichern);
Enumeration enum = Hinzufuegen.vspeichern.elements();

while(enum.hasMoreElements())
{
try
{
pw = new PrintWriter(new FileWriter(f));
pw.println(enum.nextElement() + "=" + enum.nextElement());
pw.close();
}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}
catch(NoSuchElementException nsee)
{
System.err.println(nsee.getMessage());
}
}
}
else
{
if (PropertyAuswahl.inhalt == "Handbuch")
{
String f= "HandbuchTest.txt";
System.out.println(Hinzufuegen.vspeichern);
Enumeration enum = Hinzufuegen.vspeichern.elements();

while(enum.hasMoreElements())
{
try
{
pw = new PrintWriter(new FileWriter(f));
pw.println(enum.nextElement() + "=" + enum.nextElement());
pw.close();
}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}
catch(NoSuchElementException nsee)
{
System.err.println(nsee.getMessage());
}
}
}
else
{
System.out.println("Es konnte leider nicht gepeichert werden!");
}
}
}
}
catch(NullPointerException npe)
{
System.err.println(npe.getMessage());
}
}
}

[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von javaanfänger

if (PropertyAuswahl.inhalt == "Modus")

Wenn PropertyAuswahl.inhalt ein String ist, kann das nicht funktionieren.

Objecte vergleicht man mit equals.

Original geschrieben von javaanfänger

output.write(s.getBytes());

Wo kommt denn nu auf einmal s her?

Gruß Jaraz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Morgen,

der Quelltext funktioniert jetzt, so das er den String schreibt. Ich will aber das er einen Zeilenumbruch macht , wenn ein String geschrieben worden ist. Aber den Zeilenumbruch macht er nicht.

Ich habe schon versucht dem save String ein "\n" hinzu zu fügen aber das funktioniert leider nicht. Weil wen ich ein "\n" im String habe, gibt er den String aus ein [] aus in der Datei.

Kann mir da bitte einer helfen.


import java.io.*;
import java.util.*;

class Speichern
{
PrintWriter pw;
String save;

public Speichern()
{
PropertyAuswahl.inhalt = (String) PropertyGui.auswahlcmb.getSelectedItem();
String save = Hinzufuegen.wert + "=" + Hinzufuegen.beschreibung;

try
{
if (PropertyAuswahl.inhalt == "Modus")
{
String f= "modus.properties";

RandomAccessFile output = null;
try
{
output = new RandomAccessFile(f,"rw");
output.seek(output.length());
output.write(save.getBytes());
}
catch(IOException ioe)
{
System.err.println(ioe.getMessage());
}
}
else
{
System.out.println("Es konnte leider nicht gepeichert werden!");
}
}
catch(NullPointerException npe)
{
System.err.println(npe.getMessage());
}
}
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...