ホームページ  >  記事  >  Java  >  ケーススタディ: ファイルのコピー

ケーススタディ: ファイルのコピー

PHPz
PHPzオリジナル
2024-07-16 16:27:201042ブラウズ

このセクションでは、ファイルをコピーするための便利なユーティリティを開発します。このセクションでは、ユーザーがファイルをコピーできるようにするプログラムの作成方法を学習します。ユーザーは、次のコマンドを使用して、ソース ファイルとターゲット ファイルをコマンドライン引数として指定する必要があります。

java ソース・ターゲットのコピー

プログラムはソース ファイルをターゲット ファイルにコピーし、ファイル内のバイト数を表示します。ソース ファイルが存在しない場合、またはターゲット ファイルがすでに存在する場合、プログラムはユーザーに警告します。プログラムの実行例を下の図に示します。

Image description

ソース ファイルからターゲット ファイルに内容をコピーするには、ファイルの内容に関係なく、入力ストリームを使用してソース ファイルからバイトを読み取り、出力ストリームを使用してバイトをターゲット ファイルに送信することが適切です。ソースファイルとターゲットファイルはコマンドラインから指定します。ソース ファイルの InputFileStream とターゲット ファイルの OutputFileStream を作成します。 read() メソッドを使用して入力ストリームからバイトを読み取り、write(b) メソッドを使用してそのバイトを出力ストリームに書き込みます。パフォーマンスを向上させるには、BufferedInputStreamBufferedOutputStream を使用します。以下のコードは、問題の解決策を示します。

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。