for (String name : filenames) {
FileInputStream in = new FileInputStream(input.readUTF());
int byteCounter = 0;
int rowCounter = 0;
long bufferCounter = 0;
byte[] b = new byte[8];
int read;
//in.skip(10);
//while((read = in.read()) != -1){
while((read = in.read(b, 0, 10)) != -1){
byteCounter ++;
if (byteCounter != 1000){
if (rowCounter == 16){
System.out.println("\n");
rowCounter = 0;
}
System.out.print(Integer.toHexString(read) + "\t");
bufferCounter ++;
rowCounter ++;
}else{
byteCounter = 0;
try{
Thread.sleep(200);
}catch(InterruptedException e) {
}
}
}
System.out.println("\n"+"================"+"\n");
}
Hallo, ich habe gehofft, dass mir jemand bei einem Problem helfen kann, das ich habe. Ich versuche, mein Programm dazu zu bringen, die ersten 10 Bytes einer bestimmten Datei einzulesen. Ich kann es mit skip() zum Laufen bringen, aber offensichtlich bewirkt dies das Gegenteil von dem, was ich will (es entfernt stattdessen die ersten 10) Ich habe überall gesucht, ohne Erfolg, wenn Sie mir helfen können, wäre das großartig. Sie können wahrscheinlich sehen, dass ich bereits versucht habe, read(b, off, len) in den Code einzugeben, aber das erzeugt nur zufällige Zeichen als Ausgabe und nicht die tatsächlichen Hex-Zeichen, die ich haben möchte 74 65 71 usw. (Bearbeiten: Diese zufälligen Zeichen scheinen der Hex-Code für die Anzahl der gelesenen Bytes zu sein. Für eine Textdatei, die 23 Hex-Zeichen enthält, wird also a a 3 ausgegeben (oder in anderen Worten: 10,10,3 = 23)
0 Stimmen
Ich bin mir ziemlich sicher, dass es im Falle von
in.read(b, 0, 10)
weniger als 10 Bytes zu lesen. Das passiert praktisch nie, aber es gibt keine Garantie.0 Stimmen
Ich sehe, dass mein vorheriger Kommentar vielleicht nicht klar war: Ich meine: Es passiert praktisch nie für den Fall, dass mehr Bytes verfügbar sind da die Daten von der Festplatte in Vielfachen der Sektorgröße übertragen werden.
0 Stimmen
:S Das hat mich jetzt völlig aus dem Konzept gebracht. Willst du damit sagen, dass irgendetwas an meiner Kodierung falsch ist oder fehlt? Tut mir leid, dass ich das fragen muss, aber du weißt schon...
0 Stimmen
Umgekehrt haben Sie mich mit Ihrem Code verloren.
read
ist die Anzahl der gelesenen Bytes, sie kann zwischen 1 und 10 liegen. Sie haben die Frage betiteltReading the first 10 bytes of a file
aber Sie lesen eine zufällige Anzahl von Bytes wiederholt. Ihr Byte-Zähler zählt Lesevorgänge anstelle von Bytes. Also Wollen Sie wirklich die ersten 10 Bytes einer Datei lesen? ? Wenn ja, dann sehen Sie sich meine Antwort an, ansonsten sollten Sie die Frage umbenennen.