2016-04-02 12 views
0

ファイルの128バイトを読み込み、128バイトの処理を行うためにバイト配列に入れたいと思います。これは、ファイルの全長にわたって繰り返す必要があります(つまり、毎回次の128バイトを読み込み、バイト配列に格納して処理します)。私は現在、ファイルからすべてのバイトを1バイトの配列に読み込むことができます。ファイルから特定のバイト数をJavaのバイト配列に読み取る方法は?

public static void main(String[] args) throws IOException { 

    Path path = Paths.get("path/t/file"); 
    byte[] bytes = Files.readAllBytes(path);    } 

すべてのヘルプは深くいただければ幸いです。

+3

[ 'FileInputStream.read(バイト[])'](https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html#read(バイト[] )) –

+0

'byte [] bytes = new byte [128];'次に、彼はかなり簡単に – 3kings

+0

...と戻り値をチェックします - 最後の読み込みは通常配列の長さよりも短くなります-1はEOFです。 – laune

答えて

1

あなただけのFileInputStreamを使用する必要があります。ここでは

try { 
     File file = new File("file.ext"); 
     RandomAccessFile data = new RandomAccessFile(file, "r"); 

     byte[] fullBytes = new byte[(int) file.length()]; 
     byte[] processBytes = new byte[128]; 

     for (long i = 0, len = file.length()/128; i < len; i++) { 
      data.readFully(processBytes); 

      // do something with the 128 bytes (processBytes). 
      processBytes = ByteProcessor.process(processBytes) 

      // add the processed bytes to the full bytes array 
      System.arraycopy(processBytes, 0, fullBytes, processBytes.length, fullBytes.length); 

     } 

    } catch (IOException ex) { 
     // catch exceptions. 
    } 
+0

* ...ファイルの全長にわたって繰り返す必要があります。 – laune

+0

ファイルの最初の128バイトを読み込みます。その後、次の128バイトを読んでください...私はファイルの最後に達するまでこれを続けます – Ilakkiya

+0

Iveは私の答えを編集しました。今は大丈夫です? –

0

はあなたが行うことができるものです。

public void byteStuff() 
    { 
     File file= new File("PATHT TO FILE"); 
     FileInputStream input= new FileInputStream(file); 

     byte[] bytes = new byte[128]; 

     while((input.read(bytes)) != -1) 
     { 
      //byte array is now filled. Do something with it. 
      doSomething(bytes); 
     } 
    } 
+0

これは必ずしも一度に128バイトを読み取るわけではないことに注意してください。*は128バイトまで*読み込みます。 –

+0

@AndyTurner ahh大丈夫ですので、一度に128バイトを読み取る方法がありますか?下の答えのようなものでしょうか? – 3kings

+0

いいえ、その答えはそれと同じ問題です。読み込んだバイト数( 'read'の戻り値)を確認し、128バイトが得られるまで読み込みを続ける必要があります。 –

関連する問題