このセクションでは、ファイルをコピーするための便利なユーティリティを開発します。このセクションでは、ユーザーがファイルをコピーできるようにするプログラムの作成方法を学習します。ユーザーは、次のコマンドを使用して、ソース ファイルとターゲット ファイルをコマンドライン引数として指定する必要があります。
java ソース・ターゲットのコピー
プログラムはソース ファイルをターゲット ファイルにコピーし、ファイル内のバイト数を表示します。ソース ファイルが存在しない場合、またはターゲット ファイルがすでに存在する場合、プログラムはユーザーに警告します。プログラムの実行例を下の図に示します。
ソース ファイルからターゲット ファイルに内容をコピーするには、ファイルの内容に関係なく、入力ストリームを使用してソース ファイルからバイトを読み取り、出力ストリームを使用してバイトをターゲット ファイルに送信することが適切です。ソースファイルとターゲットファイルはコマンドラインから指定します。ソース ファイルの InputFileStream とターゲット ファイルの OutputFileStream を作成します。 read() メソッドを使用して入力ストリームからバイトを読み取り、write(b) メソッドを使用してそのバイトを出力ストリームに書き込みます。パフォーマンスを向上させるには、BufferedInputStream と BufferedOutputStream を使用します。以下のコードは、問題の解決策を示します。
package demo; import java.io.*; public class Copy { public static void main(String[] args) throws IOException { // Check command-line parameter usage if(args.length != 2) { System.out.println("Usage: java Copy sourceFile targetfile"); System.exit(1); } // Check if source file exists File sourceFile = new File(args[0]); if(!sourceFile.exists()) { System.out.println("Source file " + args[0] + " does not exist"); System.exit(2); } // Check if source file exists File targetFile = new File(args[1]); if(!targetFile.exists()) { System.out.println("Target file " + args[1] + " already exist"); System.exit(3); } try( // Create an input stream BufferedInputStream input = new BufferedInputStream(new FileInputStream(sourceFile)); // Create an output stream BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(targetFile)); ) { // COntinuously read a byte from input and write it to output int r, numberOfBytesCopied = 0; while((r = input.read()) != -1) { output.write((byte)r); numberOfBytesCopied++; } // Display the file size System.out.println(numberOfBytesCopied + " bytes copied"); } } }
プログラムはまず、ユーザーがコマンド ラインの 7 ~ 10 行目で 2 つの必須引数を渡したかどうかをチェックします。
プログラムは、File クラスを使用して、ソース ファイルとターゲット ファイルが存在するかどうかを確認します。ソース ファイルが存在しない場合 (14 ~ 17 行目)、またはターゲット ファイルが既に存在する場合 (20 ~ 24 行目)、プログラムは終了します。
28 行目で、FileInputStream でラップされた BufferedInputStream を使用して入力ストリームが作成され、FileOutputStreamBufferedOutputStream を使用して出力ストリームが作成されます。 🎜> 行 31.
式((r = input.read()) != -1) (行 35) は、 からバイトを読み取ります。
input.read() を実行し、それを r に代入し、-1 であるかどうかを確認します。入力値 -1 はファイルの終わりを意味します。プログラムは継続的に入力ストリームからバイトを読み取り、すべてのバイトが読み取られるまで出力ストリームに送信します。
以上がケーススタディ: ファイルのコピーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。