OutputStream

Status
Nicht offen für weitere Antworten.

Han

Bekanntes Mitglied
Hallo...ich frage mich warum folgender OutputStream auf eine Datei nicht funktioniert:

Code:
 try{
			OutputStream out = new FileOutputStream("hannes.txt");
			Byte b = 3;
			out.write(b);
			byte[] buffer = {1,2,3};
			out.write(buffer);
			out.close();
		}catch(FileNotFoundException e){
		
		}catch(IOException ex){
			
		}

Eine Textdatei wird erzeugt aber mit folgendem Inhalt:


Was mache ich falsch?

mfg,
Hannes
 
B

Blake

Gast
Da du anscheinend Character-Data schreiben willst, ist der FileOutputStream falsch.
So gehts:

Code:
try
{
   BufferedWriter bwriter = new BufferedWriter(new FileWriter("test.txt"));
   bwriter.write("foo");
   bwriter.close();
} catch (IOException io_ex)
{	
}
 

Han

Bekanntes Mitglied
Hallo...und was kann ich dann mit Byte machen? Ich habe mir das so gedacht das Byte ja Zahlen von -128 bis 128 zulässt und demzufolge ich Zahlen von -128 bis 128 in die Textdatei reinschreiben kann....

mfg,
Hannes
 

byte

Top Contributor
Nein. Damit schreibst Du Binärdaten. Für Strings oder Zahlen nimmt man Reader/Writer.
 

Han

Bekanntes Mitglied
Hmm...und was sind bsp. Binärdaten...1er und 0er oder?

Code:
		try{
			OutputStream out = new FileOutputStream("hannes.txt");
			Byte b = 0;
			out.write(b);
			byte[] buffer = {0,1,1};
			out.write(buffer);
			out.close();
		}catch(FileNotFoundException e){
		
		}catch(IOException ex){
			
		}

Anzeige im Textfile: 


Was würde nun als Binärdatei durchgehen?. Ich finde dass ist äußerst verwirrend kann doch ein byte[] buffer auch Zahlen von -128 bis 128 speichern und so in den Irrglauben gerät auch diese Zahlen in die Textdatei schreiben zu können....oder steh ich da voll daneben...

mfg,
Hannes
 
B

Blake

Gast
Han hat gesagt.:
Hmm...und was sind bsp. Binärdaten...1er und 0er oder?

Code:
		try{
			OutputStream out = new FileOutputStream("hannes.txt");
			Byte b = 0;
			out.write(b);
			byte[] buffer = {0,1,1};
			out.write(buffer);
			out.close();
		}catch(FileNotFoundException e){
		
		}catch(IOException ex){
			
		}

Anzeige im Textfile: 


Was würde nun als Binärdatei durchgehen?. Ich finde dass ist äußerst verwirrend kann doch ein byte[] buffer auch Zahlen von -128 bis 128 speichern und so in den Irrglauben gerät auch diese Zahlen in die Textdatei schreiben zu können....oder steh ich da voll daneben...

mfg,
Hannes

Natürlich kannst du, wenn auch umständlich mit write(byte) Characters schreiben. Aber dann solltest du auch nur solche bytes schreiben, die von einem Textinterpreter als Text interpretiert werden können.

Also:
Code:
try{
   OutputStream out = new FileOutputStream("hannes.txt");
   byte buffer[] = {65, 66};
   out.write(buffer);
   out.close();
}catch(FileNotFoundException e){
		
}catch(IOException ex){
			
}
 

byte

Top Contributor
Han hat gesagt.:
Hmm...und was sind bsp. Binärdaten...1er und 0er oder?

Code:
		try{
			OutputStream out = new FileOutputStream("hannes.txt");
			Byte b = 0;
			out.write(b);
			byte[] buffer = {0,1,1};
			out.write(buffer);
			out.close();
		}catch(FileNotFoundException e){
		
		}catch(IOException ex){
			
		}

Anzeige im Textfile: 


Was würde nun als Binärdatei durchgehen?. Ich finde dass ist äußerst verwirrend kann doch ein byte[] buffer auch Zahlen von -128 bis 128 speichern und so in den Irrglauben gerät auch diese Zahlen in die Textdatei schreiben zu können....oder steh ich da voll daneben...

mfg,
Hannes


Im Prinzip sind alle Daten 0en und 1en. Es kommt halt immer drauf an, wie man diese binären Daten interpretiert. Text zum Beispiel kann man erst dann vernünftig lesen, wenn die Daten eine bestimmte Kodierung haben. Java Strings sind z.b. mit Unicode kodiert. Es gibt entsprechende Tabellen, da kannst Du dann ablesen, welches Zeichen wie kodiert ist.

Wenn Du also byte b = 0 in eine Datei schreibst, dann ist damit das Binärdatum 0 gemeint und nicht umbedingt die Zahl 0. Denn die Zahl siehst Du nur, wenn Du das ganze richtig kodierst.

Lies Dir das am besten mal in einem Javabuch durch. Das ist eine Problematik, die man nicht mal eben in drei Sätzen verständlich erläutern kann, weil auch ne Menge Mathematik dahintersteckt.
 

Han

Bekanntes Mitglied
Hallo....ok bei 65,66 als Byte in eine Textdatei geschrieben gibt es mir nichts anderes als A,B aus da dies der ASCII-Tabelle entspricht. Und ganz normale Characters kann ich auch reinschreiben komm ich grad drauf....also z.b. 'H'.

Mein Problem ist halt die Sinnhaftigkeit der OutputStreams. OK, wenn ich Zahlen sowie Strings schreiben will verwende ich Reader,Writer. Bei Binärdaten (alles sind Binärdaten also was jetzt wirklich) anscheinend den OutputStream. Und wo braucht man den bzw. wie kann ich Binärdaten auf eine Datei schreiben. Zu Reader,Writer gibt es viele Bsp.. Hingegen zu InputStream, OutputStream hab ich noch nichts brauchbares gefunden was mir weiterhilft.

mfg,
Hannes
 

Blake

Neues Mitglied
Hier ein Beispiel, in welchem der FileInputStream und FileOutputStream benutzt werden.
Es wird die Datei in.mp3 nach out.mp3 kopiert.

Code:
try
{
   BufferedInputStream in = new BufferedInputStream(new FileInputStream("in.mp3"));
   BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("out.mp3"));
   byte buffer[] = new byte[1024];
   int len;
   while((len = in.read(buffer)) != -1)
   {
       out.write(buffer, 0, len);
   }
   in.close();
   out.close();
} catch (FileNotFoundException nf_ex)
{
    nf_ex.printStackTrace();
    System.exit(1);
} catch (IOException io_ex)
{
    io_ex.printStackTrace();
    System.exit(1);
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
berserkerdq2 inputstream und bufferedwirter /outputstream und bufferedwriter Java Basics - Anfänger-Themen 9
J Nachricht an OutputStream Java Basics - Anfänger-Themen 2
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
B InputStream / OutputStream / PipedOutputStream und managedExecutorService Java Basics - Anfänger-Themen 3
B java.io.OutputStream zu java.io.InputStream konvertieren Java Basics - Anfänger-Themen 18
B Input/Output OutputStream im Paramaeter Java Basics - Anfänger-Themen 2
B OutputStream in FileInputStream? Java Basics - Anfänger-Themen 9
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
B Konvertieren: Outputstream zu Inputstream Java Basics - Anfänger-Themen 13
M ArrayList durch OutputStream in Datei Java Basics - Anfänger-Themen 9
S Objekte mit Outputstream in Safefile Java Basics - Anfänger-Themen 4
B Input/Output Socket I/O - outputStream.write(-1) Java Basics - Anfänger-Themen 2
B Socket OutputStream Java Basics - Anfänger-Themen 17
B Input/Output InputStream (JSch) in OutputStream (Blob) überführen Java Basics - Anfänger-Themen 8
B [Erledigt] Fehlverhalten mit File, FileInput/OutputStream und FileChannel Java Basics - Anfänger-Themen 4
Forlan OutputStream Initialisieren Java Basics - Anfänger-Themen 4
F DataIn/Outputstream Java Basics - Anfänger-Themen 4
lars-sh HttpURLConnection und OutputStream Java Basics - Anfänger-Themen 4
A String in OutputStream schreiben Java Basics - Anfänger-Themen 5
D An Datei "anhängen" mit OutputStream Java Basics - Anfänger-Themen 9
S Outputstream & String? Java Basics - Anfänger-Themen 4
reibi OutputStream nach ByteOutputStream konvertieren Java Basics - Anfänger-Themen 21
P OutputStream Java Basics - Anfänger-Themen 7
M ProcessBuilder und OutputStream Java Basics - Anfänger-Themen 2
M OutputStream funktioniert nur in Endlosschleife ? Java Basics - Anfänger-Themen 4
R OutputStream direkt in StringBuffer schreiben lassen Java Basics - Anfänger-Themen 2
G ClassLoader und OutPutStream Java Basics - Anfänger-Themen 3
G Standard OutputStream out wiederherstellen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben