Lesen Sie die ersten 10 bytes einer Datei in Java
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 zusammen, ich hatte gehofft, jemand könnte in der Lage sein, mir zu helfen mit einem Problem, das ich habe. Ich versuche, mein Programm zu Lesen in den ersten 10 bytes der angegebenen Datei. Kann ich es auf der Arbeit mit der skip (), aber offensichtlich ist dies nicht das Gegenteil von dem, was ich will (es entfernt die ersten 10 statt)
Ich habe überall gesucht ohne Erfolg, wenn Sie mir helfen können, das wäre toll.
Sie können sich wahrscheinlich sehen, dass ich versucht habe zu geben Sie die read(b, off, len) in den code schon, aber dieses nur erzeugt zufällige Zeichen als Ausgang anstatt die tatsächlichen hex-Zeichen will ich 74 65 71 etc (Edit: Diese willkürliche Zeichen zu sein scheinen, die hex-code für die Anzahl der bytes, die gelesen wurden. Also für eine Textdatei, die mit 23 hex-Zeichen in es, erzeugt es eine 3 (oder in anderen Worten: 10,10,3 = 23)
- Ich bin ziemlich sicher, dass es scheitert bei
in.read(b, 0, 10)
Lesen weniger als 10 bytes. Er ist praktisch nie passiert, aber es gibt keine Garantie. - Ich siehe meinen vorherigen Kommentar nicht klar ist: ich meine: Es ist praktisch nie passiert, in Fall gibt es mehr bytes zur Verfügung, da Daten zu erhalten übertragen von der Festplatte in vielfachen der Sektorgröße.
- :S Das hat sich völlig verloren, mir jetzt. Sie sagen, es ist etwas falsch/fehlt aus meiner Codierung? Tut mir Leid zu Fragen, aber Sie wissen...
- Der andere Weg, geben Sie den code verloren ich.
read
ist die Anzahl der bytes, die gelesen, es kann alles sein zwischen 1 und 10. Sie betitelt die FrageReading the first 10 bytes of a file
aber Sie Lesen doch einige zufällige Anzahl von bytes wiederholt. Ihre byte-Zähler count liest anstelle von bytes. So wollen Sie wirklich Lesen, die ersten 10 bytes einer Datei? Wenn ja, dann schau dir meine Antwort, ansonsten betrachten die Umbenennung der Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
das problem ist hier
read
enthält die Anzahl der bytes, effektiv Lesen aus stream. Die bytes werden im arrayb
.Übrigens: dein array hat eine Größe von 8. sollten Sie increas es zu 10, wenn Sie wollen, lese 10 bytes!
System.out.print(org.apache.commons.codec.binary .Hex.encodeHexString(b) + "\t");
Dies ist der einfachste Weg, aber es wirft in Fall gibt es weniger als 10 bytes zur Verfügung. Falls Sie es nicht möchten, verwenden Sie eine Schleife. Irgendwie habe ich nicht das bekommen, was Sie tun, es sieht wirklich nicht wie das Lesen der ersten 10 bytes:
if (byteCounter != 1000)