Javaチャネルの使用経験はありません。バイト配列をファイルに書き込みたいのですが。現在、私は次のコードを持っています:
String outFileString = DEFAULT_DECODED_FILE; // Valid file pathname
FileSystem fs = FileSystems.getDefault();
Path fp = fs.getPath(outFileString);
FileChannel outChannel = FileChannel.open(fp, EnumSet.of(StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.WRITE));
// Please note: result.getRawBytes() returns a byte[]
ByteBuffer buffer = ByteBuffer.allocate(result.getRawBytes().length);
buffer.put(result.getRawBytes());
outChannel.write(buffer); // File successfully created/truncated, but no data
このコードを使用すると、出力ファイルが作成され、存在する場合は切り捨てられます。また、IntelliJデバッガーでは、データが含まれていることがわかりbuffer
ます。outChannel.write()
また、例外をスローせずに回線が正常に呼び出されます。ただし、プログラムの終了後、データは出力ファイルに表示されません。
誰かが(a)FileChannel APIがバイト配列をファイルに書き込むための許容可能な選択であるかどうかを教えてもらえますか?(b)そうであれば、それを機能させるために上記のコードをどのように変更する必要がありますか?