Grosse Zahlen in einer Datei schreiben mit BufferedOutputStream

Disap

Mitglied
Moin zusammen.

Ich möchte, sofern dies denn überhaupt möglich ist, mittels dem BufferedOutputStream Integer Zahlen, also außerhalb von byte, in eine Textdatei schreiben. Siehe hier mein Quellcode:

Java:
import java.io.*;


public class Buffered {
	
	public static void main(String[] args) {
		//Schreiben
		try {
			BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("test.txt"));
	
			int a = 400;
	
			 out.write(a);
			 out.flush();
			 out.close();
			
		} catch(Exception e) {
			System.out.println("Fehler " + e);
		}
		
		//Lesen
		
	    try {
		    int a;
		    BufferedInputStream in = new BufferedInputStream(new FileInputStream("test.txt"));
		    while((a = in.read()) != -1) {
		    	System.out.println(a);
		    }
		    in.close();
	    } catch(Exception e) {
	    	System.out.println("Fehler " + e);
	    }
	}

}

Die Ausgabe hierbei ist 144. Wie ich vermutlich erkannt habe, liegt das daran, dass BufferedOutputStream nur für das Byte-weise Schreiben ist. Daher die Frage, wie kann ich nun doch die Zahl 400 in eine Datei schreiben und wieder auslesen lassen, ohne auf BufferedOutputStream zu verzichten?

Viele Grüße
Disap
 
Versuche mal folgenden abgeänderten Code:
Code:
   1.
      import java.io.*;
       
       
      public class Buffered {
         
          public static void main(String[] args) {
              //Schreiben
              try {
                  BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("test.txt"));
         
                  String a = "400";
         
                   out.write(a.getBytes());
                   out.flush();
                   out.close();
                 
              } catch(Exception e) {
                  System.out.println("Fehler " + e);
              }
             
              //Lesen
             
              try {
                  int byteInt;
                  String wert="";

                  BufferedInputStream in = new BufferedInputStream(new FileInputStream("test.txt"));
                  while((byteInt = in.read()) != -1) {
                      wert+=(Char)byteInt;
                  }
                  in.close();
                int zahl=Integer.parseInt(wert);
                System.out.println(zahl);
              } catch(Exception e) {
                  System.out.println("Fehler " + e);
              }.
          }


      } 
      }
So müsste es funktionieren. Du darfst deine Zahl nicht als int übergeben sondern als String. Du speicherst den String und liest ihn dann nacher wieder aus. Parst ihn nach int und fertig. Hoffe ich habe keinen fehler oben gemacht. Habe es nicht ausprobiert.
 
Hi.

Nicht erwähnenswerte kleine Tippfehler waren drin (eine Klammer zu viel, char aus Versehen gross geschrieben und ein Punkt hinter einen Klammer). Vielen Dank für die Lösung des Problems.

Allerdings wenn ich jetzt a erst einmal berechne, z. B. ganz simpel

Code:
int a = 5;
int b = 2000;
a = a*b;

Jetzt ist der Wert a ein Integer, den ich aber nicht in den Typ String casten kann. Was mache ich in so einem Fall?

Viele Grüße
Disap
 
Java:
package de.tutorials;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectStreamDemo {

	
	public static void main(String[] args) throws Exception {
		FileOutputStream outstream = new FileOutputStream("myFile.data");
		ObjectOutputStream out = new ObjectOutputStream(outstream);
		
		for (int i = 0; i < 10; i++) {
			out.writeInt(i);
		}
		
		out.close();
		
		
		
		FileInputStream instream = new FileInputStream("myFile.data");
		ObjectInputStream in = new ObjectInputStream(instream);
		for (int i = 0; i < 10; i++) {
			System.out.println(in.readInt());
		}
		
		in.close();

	}

}
 
Wenn es unbedingt mit BufferedOutputStream sein muss:

Java:
package de.tutorials;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class ObjectStreamDemo {

	
	public static void main(String[] args) throws Exception {
		FileOutputStream outstream = new FileOutputStream("myFile.data");
		ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(outstream));
		
		for (int i = 0; i < 10; i++) {
			out.writeInt(i);
		}
		
		out.close();
		
		
		
		FileInputStream instream = new FileInputStream("myFile.data");
		ObjectInputStream in = new ObjectInputStream(new BufferedInputStream(instream));
		for (int i = 0; i < 10; i++) {
			System.out.println(in.readInt());
		}
		
		in.close();

	}

}
 
Zurück