手動ループを使用せずに 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 ベースのアプローチには、従来の方法に比べていくつかの利点があります。
以上が手動ループを行わずに Java でファイルを効率的にコピーするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。