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");
}
Привет, я надеялся, что кто-то сможет помочь мне с проблемой, с которой я столкнулся. Я пытаюсь запустить свою программу в первых 10 байтах указанного файла. Я могу заставить его работать с skip(), но, очевидно, это делает противоположное тому, что я хочу (он удаляет первые 10 вместо этого) Я искал все безрезультатно, если вы можете помочь мне, будь велика. Вероятно, вы можете увидеть, что я пытался ввести read (b, off, len) в код уже, но это просто приводит к случайным символам в качестве вывода, а не к фактическим шестнадцатеричным символам, которые я хочу 74 65 71 и т. Д. (Edit: These случайные символы кажутся шестнадцатеричным кодом для количества прочитанных байтов. Таким образом, для текстового файла с 23 шестнадцатеричными символами в нем он генерирует aa 3 (или другими словами: 10,10,3 = 23)Чтение первых 10 байтов файла в Java
Я уверен, что он терпит неудачу в случае 'in.read (b, 0, 10) 'чтение менее 10 байт. Это практически никогда не бывает, но нет никакой гарантии. – maaartinus
Я вижу, что мой предыдущий комментарий может быть неясным: я имею в виду: он практически никогда не случается * в случае, если имеется больше байтов *, поскольку данные передаются с диска в несколько раз по размеру сектора. – maaartinus
: S Это полностью потеряло меня сейчас. Вы говорите, что что-то не так с/отсутствием кода? Извините, что вам нужно спросить, но вы знаете ... – user585522