ホームページ > Java > &#&チュートリアル > 手動ループを行わずに Java でファイルを効率的にコピーするにはどうすればよいですか?

手動ループを行わずに Java でファイルを効率的にコピーするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-20 15:53:10
オリジナル
496 人が閲覧しました

How to Efficiently Copy Files in Java without Manual Looping?

手動ループを使用せずに Java でファイルを効率的にコピーする方法

ストリーム処理と手動ループを使用した Java の従来のファイル コピー アプローチは面倒な場合があります。ただし、言語内、特に新しい NIO (新しい入力/出力) パッケージには、より簡潔な代替手段があります。

NIO では、FileChannel クラスに transferTo() メソッドと transferFrom() メソッドが導入されています。これらのメソッドは、ファイル間でデータを直接転送する効率的な方法を提供します。

NIO ベースのファイル コピー コード

import java.io.File;
import java.nio.channels.FileChannel;
import java.nio.file.Files;
import java.nio.file.StandardOpenOption;

public class FileCopierNIO {
  public static void copyFile(File sourceFile, File destFile) throws IOException {
    if (!destFile.exists()) {
      destFile.createNewFile();
    }

    try (
      FileChannel source = new FileInputStream(sourceFile).getChannel();
      FileChannel destination = new FileOutputStream(destFile).getChannel()
    ) {
      destination.transferFrom(source, 0, source.size());
      source.close();
      destination.close();
    }
  }

}
ログイン後にコピー

このコードは、ファイルのコピーを 1 つのメソッドで簡素化します。これにより、手動のループ処理やストリーム処理が不要になります。さらに、NIO.2 パッケージの Files.copy() メソッドを使用すると、さらに簡素化できます。

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;

public class FileCopierNIO2 {
  public static void copyFile(File sourceFile, File destFile) throws IOException {
    Path sourcePath = sourceFile.toPath();
    Path destPath = destFile.toPath();
    Files.copy(sourcePath, destPath, StandardCopyOption.REPLACE_EXISTING);
  }
}
ログイン後にコピー

Files.copy() メソッドは、FileChannel.transferFrom() メソッドと同じ機能を提供します。

NIO ベースの利点コピー

ファイル コピーに対する NIO ベースのアプローチには、従来の方法に比べていくつかの利点があります。

  • パフォーマンスの向上: NIO はダイレクト メモリ バッファーを使用し、ネイティブ システム コールにより、データ転送速度が向上します。
  • メモリの削減オーバーヘッド: 手動ループとバッファリングを排除することで、NIO はファイルのコピーに関連するメモリ オーバーヘッドを削減します。
  • 簡略化されたコード: NIO ベースのコードは、NIO ベースのコードよりも簡潔で、保守が容易です。従来のアプローチ。

以上が手動ループを行わずに Java でファイルを効率的にコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート