2015-04-25 7 views
0

Я читаю из файла «.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 (см. Прилагаемые рисунки).

Любое решение, чтобы исправить это?

image1 image2

+0

Вы читаете двоичный файл в текстовом режиме. В последнем случае строки разделяются символами «0d» (CR). – mins

+0

Как правильно читать? –

+2

Короткий ответ: * вы открываете его как поток байтов *, и здесь есть пример (он хранит байты в памяти, вам нужно записать их в файл): [File to byte \ [\] в Java] (http://stackoverflow.com/questions/858980/file-to-byte-in-java). Но помимо этого вы должны уточнить свою потребность, другие решения могут быть лучше оптимизированы. – mins

ответ

1

Потерять InputStreamReader и BufferedReader, просто использовать FileInputStream на своих собственных.
Отсутствует кодировка символов, нет строк, просто байтов.
Его страница Javadoc: here, это должно быть все, что вам нужно.

Совет, если вы хотите прочитать весь файл сразу: File.length(), как в

File file = new File("test.264"); 
byte[] buf = new byte[(int)file.length()]; 
// Use buf in InputStream.read()