Beispiel #1
0
  /**
   * バイト配列からファイルへコピーします。
   *
   * @param in バイト配列。{@literal null}であってはいけません
   * @param out ファイル。{@literal null}であってはいけません
   * @return コピーしたバイト数
   */
  public static int copy(final byte[] in, final File out) {
    assertArgumentNotNull("in", in);
    assertArgumentNotNull("out", out);

    final FileOutputStream os = OutputStreamUtil.create(out);
    try {
      final FileChannel channel = os.getChannel();
      final ByteBuffer buffer = ByteBuffer.wrap(in);
      return ChannelUtil.write(channel, buffer);
    } finally {
      CloseableUtil.close(os);
    }
  }
Beispiel #2
0
 /**
  * ファイル入力ストリームの内容を出力ストリームにコピーします。
  *
  * <p>ファイル入力ストリーム、出力ストリームともクローズされません。
  *
  * @param in ファイル入力ストリーム
  * @param out 出力ストリーム
  * @return コピーしたバイト数
  */
 protected static int copyInternal(final FileInputStream in, final OutputStream out) {
   try {
     final FileChannel channel = in.getChannel();
     final ByteBuffer buffer = ByteBuffer.allocate(DEFAULT_BUF_SIZE);
     final byte[] buf = buffer.array();
     int len;
     int amount = 0;
     while ((len = ChannelUtil.read(channel, buffer, amount)) != -1) {
       out.write(buf, 0, len);
       buffer.clear();
       amount += len;
     }
     out.flush();
     return amount;
   } catch (final IOException e) {
     throw new IORuntimeException(e);
   }
 }
Beispiel #3
0
 /**
  * ファイル入力ストリームの内容をファイル出力ストリームにコピーします。
  *
  * <p>ファイル入力ストリーム、ファイル出力ストリームともクローズされません。
  *
  * @param in ファイル入力ストリーム
  * @param out ファイル出力ストリーム
  * @return コピーしたバイト数
  */
 protected static int copyInternal(final FileInputStream in, final FileOutputStream out) {
   final FileChannel ic = in.getChannel();
   final FileChannel oc = out.getChannel();
   return (int) ChannelUtil.transfer(ic, oc);
 }