Rumah >Java >javaTutorial >Kajian Kes: Menyalin Fail

Kajian Kes: Menyalin Fail

PHPz
PHPzasal
2024-07-16 16:27:201144semak imbas

Bahagian ini membangunkan utiliti yang berguna untuk menyalin fail. Dalam bahagian ini, anda akan belajar cara menulis program yang membolehkan pengguna menyalin fail. Pengguna perlu menyediakan fail sumber dan fail sasaran sebagai hujah baris arahan menggunakan arahan:

sasaran sumber Salin java

Atur cara menyalin fail sumber ke fail sasaran dan memaparkan bilangan bait dalam fail. Program ini harus memberi amaran kepada pengguna jika fail sumber tidak wujud atau jika fail sasaran sudah wujud. Contoh larian program ditunjukkan dalam Rajah di bawah.

Image description

Untuk menyalin kandungan daripada fail sumber ke fail sasaran, adalah sesuai untuk menggunakan aliran input untuk membaca bait daripada fail sumber dan aliran output untuk menghantar bait ke fail sasaran, tanpa mengira kandungan fail. Fail sumber dan fail sasaran ditentukan daripada baris arahan. Cipta InputFileStream untuk fail sumber dan OutputFileStream untuk fail sasaran. Gunakan kaedah read() untuk membaca bait daripada strim input, dan kemudian gunakan kaedah write(b) untuk menulis bait ke strim output. Gunakan BufferedInputStream dan BufferedOutputStream untuk meningkatkan prestasi. Kod di bawah memberikan penyelesaian kepada masalah tersebut.

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");
        }
    }
}

Atur cara mula-mula menyemak sama ada pengguna telah lulus dua hujah yang diperlukan daripada baris arahan dalam baris 7–10.

Atur cara menggunakan kelas Fail untuk menyemak sama ada fail sumber dan fail sasaran wujud. Jika fail sumber tidak wujud (baris 14–17) atau jika fail sasaran sudah wujud (baris 20–24), atur cara akan tamat.

Strim input dibuat menggunakan BufferedInputStream dibalut pada FileInputStream dalam baris 28 dan strim output dicipta menggunakan BufferedOutputStream dibalut pada FileOutStream 🎜> dalam baris 31.

Ungkapan

((r = input.read()) != -1) (baris 35) membaca bait daripada
input.read(), berikannya kepada r dan semak sama ada -1. Nilai input -1 menandakan berakhirnya fail. Program ini membaca bait secara berterusan daripada strim input dan menghantarnya ke strim output sehingga semua bait telah dibaca.

Atas ialah kandungan terperinci Kajian Kes: Menyalin Fail. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn