プロセスがまだファイルを書き込みに使用している間に、ファイルからバイト配列ブロックを作成しようとしました。実際、私はビデオをファイルに保存していますが、記録中に同じファイルからチャンクを作成したいと考えています。
次のメソッドは、ファイルからバイトのブロックを読み取ることになっていました。
private byte[] getBytesFromFile(File file) throws IOException{
InputStream is = new FileInputStream(file);
long length = file.length();
int numRead = 0;
byte[] bytes = new byte[(int)length - mReadOffset];
numRead = is.read(bytes, mReadOffset, bytes.length - mReadOffset);
if(numRead != (bytes.length - mReadOffset)){
throw new IOException("Could not completely read file " + file.getName());
}
mReadOffset += numRead;
is.close();
return bytes;
}
しかし問題は、すべての配列要素が 0 に設定されていることです。これは、書き込みプロセスがファイルをロックしているためだと思います。
ファイルへの書き込み中にファイルチャンクを作成する他の方法を誰かが示すことができれば、非常に感謝しています。