Einlesen von Bytes

Status
Nicht offen für weitere Antworten.

Frank the B.

Mitglied
Hallo,
also ich hab folgendes Problem und hoffe auf Eure Hilfe. I will von einer Datei Bytes einlesen, Messwerte von Sensoren. Nur leider gehen dabei Informationen verloren (ich gehe sogar von rund 2/3 Verlust aus). Das heißt also, dass ich nicht die gesamten Bytes bekomme, sondern immer nur ein paar.
Kann es vielleicht sein, dass die Daten zu schnell reinkommen und Java das nicht gebacken bekommt?
Hier mal Auszug meines Codes, nur dass Ihr seht, was ich nutz
Code:
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class ReadingErec {
	public static void main(String[] args){
		
		File file = new File(Hier kommt Pfad für Datei rein);
		FileInputStream fileInput = null;
		try {
			fileInput = new FileInputStream(file);
		} catch (FileNotFoundException e1) {
		}
		DataInputStream dataInput = new DataInputStream(fileInput);
		
		byte readByte = 0;
		String temp = null;
		int i = 0;
		
		byte[] oneDataSerieRead = new byte[64];
		String[] stringData = new String[64];
		try {
			readByte = dataInput.readByte();
		} catch (IOException e) {}

		while (readByte != 0){
...
Gibt es sonst auch eine Möglichkeit in Java einzelne Bits einzulesen? Ich weiß sonst nicht mehr weiter....
Bin für jede Hilfe dankbar :)
MfG
Frank.
 

Generic1

Top Contributor
>>Kann es vielleicht sein, dass die Daten zu schnell reinkommen und Java das nicht gebacken bekommt?

Das würd ich ausschließen,
Probier mal, den DataInputStream zu dekorieren mit einem BufferedInputStream

Code:
DataInputStream dataInput = new DataInputStream(fileInput);
 
S

Spacerat

Gast
Einzelne Bits...? Ist wohl ein Druckfehler (ist ja von Bytes die Rede), sonst wäre es
Code:
DataInputStream.readBoolean()
Wenn mann den gesammten Stream allerdings in einem ByteArray haben will geht folgendes:
Code:
ByteArrayOutputStream cp = new ByteArrayOutputStream();
FileInputStream in = new FileInputStream(file);
int r;
while((r = in.read()) != -1) cp.write(r);
in.close();
cp.close();
byte[] read = cp.toByteArray();
 
Zuletzt bearbeitet von einem Moderator:
T

tuxedo

Gast
Wobei letzteres nicht unüberlegt eingesetzt werden sollte. Bei zu großen Files kann man damit den zur Verfügung stehenden Speicher recht schnell sprengen...
Am Besten und nach Möglichkeit nur den Teil im Speicher halten der auch gerade im Speicher gebraucht wird.

- Alex
 

Frank the B.

Mitglied
hi nochmal,
na das ging ja schnell mit den Antworten vielen Dank :).
Leider klappt nichts von dem. Habs mit dem BufferedInput versucht und auch mit dem ByteArray und da gibts denselben Fehler....
Gibts noch eine Möglichkeit??

ps: Ich hab in drei Foren nachgefragt und Ihr seid die Ersten, die antworten :) VIelen Dank dafür.
 
T

tuxedo

Gast
Ähm, kannst du vllt. noch ein wenig mehr vom Code posten?

Was mich "verwirrt":

Code:
readByte = dataInput.readByte();

Du liest die Datei "byteweise", also ein byte nach dem anderen? Warum nicht blockweise? Und wo ist der Schleife die den Rest der Datei liest?

- Alex
 
S

Spacerat

Gast
Das hätte Klappen müssen... Da kommt mit Sicherheit irgendwo 'ne Exception (sprich Fehlermeldung). Davon bräuchte ich mal den Text...

BTW.: Tuxedo hat natürlich vollkommen Recht. Die Dateien sind hoffentlich nicht allzu gross.
 

Frank the B.

Mitglied
Also hier mal der Gesamte Code für die Klasse:
Code:
package readingErec;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Vector;

public class ReadingErec {
	
	File fileToOpen;
	FileInputStream fileInputForFileToOpen;
	DataInputStream dataInputStream;
	int oneByte;
	OnePackage onePackage = new OnePackage();
	
	
	public Vector<OnePackage> getFileToOpenAsVector(String pathToFile) throws IOException{
		
		Vector<OnePackage> output = new Vector<OnePackage>();
		
		fileToOpen = new File(pathToFile);
		System.out.println("Creating file...");
		
		fileInputForFileToOpen = new FileInputStream(fileToOpen);
		
		dataInputStream = new DataInputStream(fileInputForFileToOpen);
		System.out.println("Creating Stream...");
		int[] packet = new int[15];
		
		try{
			oneByte = dataInputStream.readUnsignedByte();
		} catch (Exception e){
		}
		System.out.println("Creating dataset...");
		while(dataInputStream.available() >= packet.length){
			if (oneByte == 255){
				for (int i = 0; i < packet.length; i++){
					packet[i] = dataInputStream.readUnsignedByte();
				}
				OnePackage temp = new OnePackage();
				temp.setPacket(packet);
				output.add(temp);
			}
		}
		return output;
	}
	public static void main(String[] args){
		ReadingErec erec = new ReadingErec();
		Vector<OnePackage> input = new Vector<OnePackage>();
		try {
			input = erec.getFileToOpenAsVector(Hier der Dateipfad);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		if (input.size() > 0)
			System.out.println("All complete...");
	}
}
Hier die Klasse OnePackage, die nur dafür ist, jeweils ein Datenpacket zu speichern. Als Klasse, damit ich Vector nehmen kann.
Code:
package readingErec;

public class OnePackage {
	private int[] packet;
	
	public OnePackage(){
		this.packet = new int[15];
	}

	public int[] getPacket() {
		return packet;
	}

	public void setPacket(int[] packet) {
		this.packet = packet;
	}
}

Kurze Erklärung:
Ich bekomm immer Datensätze von jeweils 16 byte, wobei ein Byte mit dem Wert 255 (0xff) Start- bzw. Endbyte ist. Speichern tu ich jeweils einen Block von 16 byte in dem int array package. alle packages speicher ich in dem Vector input in der main methode. input bekommt den vector output bei der Methode.
Hoffe Ihr könnt damit was anfangen.
ps: wie kann man bytes denn blockweise einlesen?
mfg
 
S

Spacerat

Gast
Also...
1. OnePackage kann eliminiert werden... Vector<int[]> funktioniert auch.
2. Möglicherweise Nebensache, aber "getFileToOpenAsVector" wird ohne "close()" auf die Streams verlassen.
Code:
public class ReadingErec
{
  public Vector<int[]> getFileToOpenAsVector(String pathtofile) throws IOException
  {
    Vector<int[]> rc = new Vector<int[]>();
    FileInputStream in = new FileInput(pathtofilename);
    int bt;
    int cnt = 0;
    int[] buf = new int[16];
    while((bt = in.read()) != -1) { // bis Datei-Ende lesen
      buf[cnt++] = bt & 0xFF;
      cnt %= 16;
      if(cnt == 0) {
        rc.add(buf);
        buf = new int[16];
      }
    }
    in.close();
    return rc;
  }

  public static void main(String args[])
  {
    Vector<int[]> packets = null;
    try {
      packets = getFileToOpenAsVector(pathtofile); // möglicherweise arg[0]
    } catch(IOException ioe) {
      ioe.printStackTrace();
    }
    if(packets != null) System.out.println("Success");
  }
}
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Mehrere Bytes auf einmal einlesen Allgemeine Java-Themen 4
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
L Datein einlesen. Allgemeine Java-Themen 5
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
K RTF-Dokumente einlesen Allgemeine Java-Themen 1
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
J Java 8 Datei einlesen Allgemeine Java-Themen 1
S Handschrift einlesen & darauf reagieren OCR Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
E Best Practice LaTeX aus Textdateien einlesen und bearbeiten Allgemeine Java-Themen 4
KaffeeFan Bilddatei einlesen und bearbeiten? Allgemeine Java-Themen 5
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
L Level einlesen Allgemeine Java-Themen 9
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
B Java - einlesen von Dateien und herausschneiden von XML Dokumenten Allgemeine Java-Themen 5
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
N Einlesen einer Kostenmatrix, Verarbeitung mit Nearest Neighbor Allgemeine Java-Themen 1
OnDemand String aus html einlesen Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
MiMa Umlaute beim Einlesen von Dateinamen Allgemeine Java-Themen 12
C Verzeichnis ins JMenu einlesen Allgemeine Java-Themen 2
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
J TextArea einlesen, mit string Allgemeine Java-Themen 2
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
Kenan89 Schnelleres Einlesen von Images Allgemeine Java-Themen 6
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
R String einlesen Allgemeine Java-Themen 8
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K XML Quelltext Website einlesen?! Allgemeine Java-Themen 3
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
S Spaltenweise einlesen Allgemeine Java-Themen 9
K JAVA Datei einlesen Allgemeine Java-Themen 2
S Input/Output Latin-9 (ISO 8859-15) Textdatei einlesen Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
T XML einlesen Allgemeine Java-Themen 14
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
C Strings in Excel einlesen! Allgemeine Java-Themen 2
K htmlCode einlesen, Speicherüberlauf? zu viel code? Allgemeine Java-Themen 21
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
K CSV einlesen und speichern Allgemeine Java-Themen 7
Q Text Datei einlesen Allgemeine Java-Themen 27
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M PDF einlesen mit PDFBox Allgemeine Java-Themen 3
L Benutzereingabe einlesen Allgemeine Java-Themen 5
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
B StringBuilder von File einlesen Allgemeine Java-Themen 8
N Probleme mit Umlauten beim Einlesen Allgemeine Java-Themen 6
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
E Leerzeichen verschwinden beim Einlesen von .txt-Dateien Allgemeine Java-Themen 5
A JExcel Formel einlesen Allgemeine Java-Themen 2
G Java PDF-Einlesen Allgemeine Java-Themen 9
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
M UTF-8 Datein einlesen, Zeichenproblem Allgemeine Java-Themen 9
H Textdatei (1GB) einlesen und verarbeiten Allgemeine Java-Themen 15
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
E HTML File mit Umlaute einlesen Allgemeine Java-Themen 8
J Konfigurationsdatei einlesen Allgemeine Java-Themen 21
G BigInteger aus DB nach einlesen in JAVA eingeklammert Allgemeine Java-Themen 3
trash mehrzeilige .txt einlesen/formatieren Allgemeine Java-Themen 8
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Textzeile einlesen Allgemeine Java-Themen 4
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben