Я читаю из файла «.264», используя код ниже.Чтение байтов из файла
public static void main (String[] args) throws IOException
{
BufferedReader br = null;try {
String sCurrentLine;
br = new BufferedReader(new InputStreamReader(new FileInputStream("test.264"),"ISO-8859-1"));
StringBuffer stringBuffer = new StringBuffer();
while ((sCurrentLine = br.readLine()) != null) {
stringBuffer.append(sCurrentLine);
}
String tempdec = new String(asciiToHex(stringBuffer.toString()));
System.out.println(tempdec);
String asciiEquivalent = hexToASCII(tempdec);
BufferedWriter xx = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:/Users/Administrator/Desktop/yuvplayer-2.3/video dinalized/testret.264"),"ISO-8859-1"));
xx.write(asciiEquivalent);
xx.close();
}catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Открытие входного и выходного файла в редакторе HEX показывает мне некоторые недостающие значения, например. 0d
(см. Прилагаемые рисунки).
Любое решение, чтобы исправить это?
Вы читаете двоичный файл в текстовом режиме. В последнем случае строки разделяются символами «0d» (CR). – mins
Как правильно читать? –
Короткий ответ: * вы открываете его как поток байтов *, и здесь есть пример (он хранит байты в памяти, вам нужно записать их в файл): [File to byte \ [\] в Java] (http://stackoverflow.com/questions/858980/file-to-byte-in-java). Но помимо этого вы должны уточнить свою потребность, другие решения могут быть лучше оптимизированы. – mins