Input stream geht net

Status
Nicht offen für weitere Antworten.

Onkel markus

Bekanntes Mitglied
Hi,
Also ich hab nen input stream eingebaut der eine zahl aus einer datei lesen soll.
Code:
    			double temp;
    			try
    			{
    			FileInputStream kontostandfile = new FileInputStream("kontostand.ini");
    			DataInputStream kontostanddata = new DataInputStream(kontostandfile);
    			if(true);
    			{
    				
    				temp = kontostanddata.readDouble();
    				System.out.println(temp);
    				String bla = new String(Double.toString(temp));
    				System.out.println(bla);
    			}
    			kontostanddata.close();		
    			}
    			catch (EOFException ende)
    				{
    				
    				}
    			catch (IOException e)
    			{
    				e.printStackTrace();
    			}

(Nen kleiner ausschnitt aus dem programm)
So.
Datei erstellt (kontostand.ini) und 400 reingeschrieben.
Ausgeführt nix passiert.
Wenn ich 13986230961245 oder sowat reintippe kommt ne zahl raus auber eine andere als 13986230961245 ...
Warum?
Der müsste doch die zahl lesen und ausgeben oder?
Oder kann der nur daten lesen die er selber schreibt?

EDIT: es kommt immer erst was wenn in der datei mindestens 8 zeichen stehen....
 
A

Anmeldeboykottierer

Gast
Hi,
verstehe ich dich richtig, du schreibst in deinem Editor (egal welchem) eine 400 und liest dann mit readDouble() den Wert?

Da hast du etwas noch gaaaanz falsch verstanden. Es gibt zwei Arten von Dateien, die du grob unterscheiden solltest, dass eine sind Textdateien, das andere Binärdateien.
Erstere bestehen aus normalen Zeichen, wie du sie auch im Editor verwendest. Dabei werden die Daten nicht weiter interpretiert, es sind irgendwelche Zeichenketten. Allein die Zeichen Carriage Return und/oder Linefeed (0x13 und 0x10) führen zu einem Zeilenumbruch.
Solche Dateien sind sehr leicht von einem Menschen zu lesen. Dieser kann etwas mit Zeichenketten anfangen.

Ein Rechner hingegen kann die nicht interpretieren. Ein Satz wie dieser und eine Zahl "400" sehen für den Rechner gleich aus, irgendwelche Strings.
Binärdaten hingegen sind sehr leicht für den Rechner lesbar. Dabei werden die Werte so geschrieben, wie sie auch im Speicher stehen, als Bytes. Schreibst du so den int Wert 0, so steht in der Datei nicht nur 0, sondern es werden 4 Byte geschrieben 0x00 0x00 0x00 0x00. Würdest du nun ein readInteger verwenden, wüßte Java, dass ein solcher Wert wiederum 4 Byte groß sein muss. Dann wird ab der aktuellen Position 4 byte gelesen und diese als ein int interpretiert.
Genauso sieht es bei einem Double aus. Allerdings ist ein Double doppelt so groß. Genau genommen besteht ein Double aus mehreren Teilen. Ein bit ist das Vorzeichen Bit, dann kommen noch der Exponent und die Mantisse (du findest in dem Java API auch den genauen Aufbau!).
Jedenfalls berechnet sich eine Gleitkommazahl aus diesen Werten. Ein Double repräsentiert den Wert Vorzeichen * Mantisse * Basis ^ Exponent, wobei die Basis natürlich 2 ist.
Genau einen solchen Wert versucht dein readDouble auch wieder einzulesen. Es werden egal wie viel du schreibst, die ersten 8 Byte genommen und als ein Double interpretiert. Die Zahl die du da stehen hast ist für dein Programm dabei keine Zahl sondern eine folge von Bytes.

Das was du im Editor schreibst ist natürlich Text. Du würdest die Zahl 0 doch auch einfach als 0 schreiben, dein Programm hingegen würde immer eine feste Anzahl von Bytes für jeden Datentyp nehmen und schreiben. 4 mal das Byte 0 würde wohl im Editor ein Sonderzeichen oder einfach ein leer wirkende Datei produzieren. Das liegt dann daran, dass das Zeichen 0x00 nicht darstellbar ist. So kann das double 400 im normalen Texteditor auch eine für dich total unlesbare Form aus acht Zeichen annhemen. Du könntest aber mit einem Hex-Editor und dem Wissen des Aufbaus nachrechnen welche Zahl da steht.

Du hast somit zwei Möglichkeiten:
  1. Du liest den Wert als String ein und wandelst dann den String in ein Double um (parse)
  2. Du schreibst die Datei durch ein Javaprogramm (writeDouble) und liest dann mit readDouble

Gruß Der Anmeldeboykottierer
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
P Selenium . findElement . input Allgemeine Java-Themen 4
E Input/Output Mikro Input bekommen Allgemeine Java-Themen 4
G Input Frame Allgemeine Java-Themen 6
B In Java Methode mit generic input und output basteln? Allgemeine Java-Themen 4
MoxxiManagarm Credential Input Allgemeine Java-Themen 5
Kirby.exe Keyboard Input ohne Enter Allgemeine Java-Themen 43
T JSoup findet input Feld nicht?! Wie kann ich das Feld finden? Allgemeine Java-Themen 3
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
I Text aus Input-Box entnehmen und zuweisen Allgemeine Java-Themen 1
J Java Sound Api Sound input und Output auswählen Allgemeine Java-Themen 4
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
T Input und Outputstream , serielle Schnittstelle Allgemeine Java-Themen 1
DanielsLPecke Input/Output Arduino input. Allgemeine Java-Themen 4
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
B Input/Output Konsolen input args Allgemeine Java-Themen 6
M Mikrofon Input simulieren Allgemeine Java-Themen 1
T Threads Input/Output im Thread - Datei ohne Inhalt Allgemeine Java-Themen 1
F FileOutput/Input Objekte Allgemeine Java-Themen 6
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
N Kalender Normen input/output Allgemeine Java-Themen 2
I Input in cmd Allgemeine Java-Themen 2
K Input file nicht lesbar Allgemeine Java-Themen 9
C Kompletter Pfad aus "input type=file" auslesen Allgemeine Java-Themen 3
B User-Input aus Zahlen und Operatoren - beste Umsetzung? Allgemeine Java-Themen 8
P Ascii Bild aus einem input file nur kommt nix im outputfile an?????? Allgemeine Java-Themen 5
D JOptionPane nur 1 Input möglich? Allgemeine Java-Themen 6
I input-/outputstream Allgemeine Java-Themen 6
T Wie kontinuierlichen asci input parsen? Allgemeine Java-Themen 3
N input programm Allgemeine Java-Themen 3
G Taushen der Input variablen einer method Allgemeine Java-Themen 14
J Binärdateien mit Input/Outputstream lesen und schreiben Allgemeine Java-Themen 3
M BufferedReader input - hängt sich auf Allgemeine Java-Themen 4
KonradN SonarLint: Resources should be closed bei Stream<T>? Allgemeine Java-Themen 6
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
A verschachtelte for-Schleife in einen Stream umwandeln? Allgemeine Java-Themen 4
A Wie schreibe ich eine For-Schleife in ein Stream API um? Allgemeine Java-Themen 12
looparda Stream mit Sonderbehandlung des ersten Elements Allgemeine Java-Themen 17
R Java Stream: Ist es möglich, einen stream zusammenzufassen Allgemeine Java-Themen 6
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
H Stream in ArrayList umwandeln Allgemeine Java-Themen 2
M stream.Collectors Fehlermeldung Allgemeine Java-Themen 1
C TCP Server und BufferedReader Leerstring im Stream? Allgemeine Java-Themen 5
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
Y Liste in Stream Packen Allgemeine Java-Themen 1
N Java stream filtern. Allgemeine Java-Themen 19
H Collector Generics Problem (incl. Stream & Lambda) Allgemeine Java-Themen 4
N javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,1] Allgemeine Java-Themen 3
N [stream-api] Parameter pro Typ zählen Allgemeine Java-Themen 1
J Stream-basierter Cache Allgemeine Java-Themen 4
D IP-Cam live stream speichern Allgemeine Java-Themen 9
B BufferedWriter in InputStream oder Zeichen-Stream in Byte-Stream Allgemeine Java-Themen 5
D Klassen Zeit aus NMEA-Stream in SimpleDateFormat Allgemeine Java-Themen 17
J Stream-Murks! Allgemeine Java-Themen 18
T Problem mit gzip Stream und Ende der Datei Allgemeine Java-Themen 2
JAVATUX Java Programm mit ATI Stream Unterstützung Allgemeine Java-Themen 3
X Audio Internet-Stream Allgemeine Java-Themen 2
B Stream Verständnisproblem Allgemeine Java-Themen 2
P Mime Type aus Stream lesen Allgemeine Java-Themen 5
C Bit Stream Klasse Allgemeine Java-Themen 9
dayaftereh Serializable und Object In/Out Stream Allgemeine Java-Themen 2
M PCL Stream lesen und schreiben Allgemeine Java-Themen 6
musiKk Stream zum Lesen von Dateien mit seek und peek Allgemeine Java-Themen 2
J Problem mit Scanner-Stream Allgemeine Java-Themen 2
O Stream unvollständig Allgemeine Java-Themen 3
0 Stream/Datei an VLC übergeben und abspielen Allgemeine Java-Themen 10
B getImage() vom Stream oder File Allgemeine Java-Themen 3
N Werte Von C++ nach Java über den Stream möglich? Allgemeine Java-Themen 8
S Stream ReadLine() Allgemeine Frage Allgemeine Java-Themen 5
S Stream ohne Referenz kopieren ? Allgemeine Java-Themen 4
D FileInputStream bzw. BufferedInput Stream Puffern Allgemeine Java-Themen 6
G Live-Stream einer WebCam importieren Allgemeine Java-Themen 3
T Mehrere Dateien byteweise durch stream schieben Allgemeine Java-Themen 9
T Stream encodierrn und decodieren mit JSpeex Allgemeine Java-Themen 2
R Stream Byte für Byte durchgehen Allgemeine Java-Themen 5
N Speichern von binären Dateien (Zip-Archiv) per Stream? Allgemeine Java-Themen 6
T Bit-Stream Allgemeine Java-Themen 12
R Stream für alle Dateiarten Allgemeine Java-Themen 9
thE_29 API für transport stream Allgemeine Java-Themen 2
M Output Stream / Protokoll does not support output Allgemeine Java-Themen 2
D GetResourceAsStream - Stream closed exception Allgemeine Java-Themen 5
G Umwandlung in Stream Allgemeine Java-Themen 5
J Output Stream Allgemeine Java-Themen 4
HolyFUT Best Practice Wie geht man mit "schlechten" Projekten um? Allgemeine Java-Themen 7
S Mit Methoden kann man definieren für was <T> steht. Geht das auch irgendwie für Variablen? Allgemeine Java-Themen 12
F 2 JsonArray vergleichen, geht es auch einfacher ? Allgemeine Java-Themen 3
LimDul Hä? Lambda-Ausdruck geht, Methoden-Referenz nicht Allgemeine Java-Themen 8
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
M Test geht auf Travis und mit Github Action schief aber nicht lokal Allgemeine Java-Themen 3
M Console geht nicht auf (Windows 10) Allgemeine Java-Themen 3
W Enumeration ein Array/List als Eigenschaft mitgeben - warum geht das nicht? Allgemeine Java-Themen 0
P Erste Schritte HauptFrame geht nicht Allgemeine Java-Themen 7
L Applet Applet zu JavaWebStart migrieren - simples sample geht nicht Allgemeine Java-Themen 2
KeVoZ_ Java Mail senden - geht nicht Allgemeine Java-Themen 4
K API - Wie geht das? Allgemeine Java-Themen 2
D Klassenübergreifender Befehl geht nicht Allgemeine Java-Themen 10
X Datentypen Byte geht nicht höher als 126 auch nicht mit casten? Allgemeine Java-Themen 22
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
M JUnit Serverseitig? Wie geht sowas? Allgemeine Java-Themen 2
G Erste Schritte Aufgabe - Geht das auch schneller ? Allgemeine Java-Themen 7

Ähnliche Java Themen

Neue Themen


Oben