Я участвую в проекте, где мы скрываем информацию в mp3-файле, изменяя байты в указанной позиции. Я нашел в сети код, который позволяет мне писать и читать байты, и я играл с ним, чтобы прочитать первые 10 байтов в mp3-файле.
Однако есть проблема, она поднимается до 4-го байта, после чего программа заканчивается. Или, другими словами, в моем цикле for это продолжается только до i = 4.
Это вывод, который я получаю.
Read 0th character of file: I
Read 1th character of file: D
Read 2th character of file: 3
Read 3th character of file:
Read 4th character of file:
Process completed.
Цикл каким-то образом заканчивается там, если вы заметили, что программа должна заканчиваться сообщением system.out, которое идет «конец программы», но даже не выходит. Код ниже. Я пробовал с несколькими файлами mp3 и результаты одинаковы.
В чем может быть проблема? почему моя программа заканчивается, даже не выдавая мне сообщение об ошибке?
import java.io.File;
import java.io.RandomAccessFile;
import java.io.IOException;</p>
<p>public class Edit {</p>
<code>private static void doAccess() {
try {
//Reads mp3 file named a.mp3
File file = new File("a.mp3");
RandomAccessFile raf = new RandomAccessFile(file, "rw");
//In this part I try to read the first 10 bytes in the file
byte ch;
for (long i = 0; i < 10 ; i++) {
raf.seek(i); //position ourselves at position i
ch = raf.readByte(); //read the byte at position i
System.out.println("Read "+ i + "th character of file: " + (char)ch); //print the byte at that position
//repeat till position 10
}
System.out.println("End of program");
raf.close();
} catch (IOException e) {
System.out.println("IOException:");
e.printStackTrace();
}
}
public static void main(String[] args) {
doAccess();
}
}
</code>
Заранее спасибо!