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.
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!