In diesem Abschnitt wird ein nützliches Dienstprogramm zum Kopieren von Dateien entwickelt. In diesem Abschnitt erfahren Sie, wie Sie ein Programm schreiben, mit dem Benutzer Dateien kopieren können. Der Benutzer muss mit dem Befehl:
eine Quelldatei und eine Zieldatei als Befehlszeilenargumente angebenJava-Quellziel kopieren
Das Programm kopiert die Quelldatei in die Zieldatei und zeigt die Anzahl der Bytes in der Datei an. Das Programm sollte den Benutzer warnen, wenn die Quelldatei nicht existiert oder wenn die Zieldatei bereits existiert. Ein Beispiellauf des Programms ist in der Abbildung unten dargestellt.
Um den Inhalt einer Quelldatei in eine Zieldatei zu kopieren, empfiehlt es sich, einen Eingabestream zum Lesen von Bytes aus der Quelldatei und einen Ausgabestream zum Senden von Bytes an die Zieldatei zu verwenden, unabhängig vom Inhalt der Datei. Die Quelldatei und die Zieldatei werden über die Befehlszeile angegeben. Erstellen Sie einen InputFileStream für die Quelldatei und einen OutputFileStream für die Zieldatei. Verwenden Sie die Methode read(), um ein Byte aus dem Eingabestream zu lesen, und verwenden Sie dann die Methode write(b), um das Byte in den Ausgabestream zu schreiben. Verwenden Sie BufferedInputStream und BufferedOutputStream, um die Leistung zu verbessern. Der folgende Code gibt die Lösung des Problems.
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"); } } }
Das Programm prüft zunächst, ob der Benutzer die beiden erforderlichen Argumente von der Befehlszeile in den Zeilen 7–10 übergeben hat.
Das Programm verwendet die Klasse File, um zu prüfen, ob die Quelldatei und die Zieldatei vorhanden sind. Wenn die Quelldatei nicht existiert (Zeilen 14–17) oder wenn die Zieldatei bereits existiert (Zeilen 20–24), endet das Programm.
Ein Eingabestream wird mithilfe von BufferedInputStream erstellt, der in FileInputStream in Zeilen 28 eingeschlossen ist, und ein Ausgabestream wird mithilfe von BufferedOutputStream erstellt, der in FileOutputStreamin den Zeilen 31.
Der Ausdruck((r = input.read()) != -1) (Zeile 35) liest ein Byte aus
input.read(), weist es r zu und prüft, ob es -1 ist. Der Eingabewert -1 gibt das Ende einer Datei an. Das Programm liest kontinuierlich Bytes aus dem Eingabestream und sendet sie an den Ausgabestream, bis alle Bytes gelesen wurden.
Das obige ist der detaillierte Inhalt vonFallstudie: Dateien kopieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!