Heim  >  Artikel  >  Java  >  Fallstudie: Dateien kopieren

Fallstudie: Dateien kopieren

PHPz
PHPzOriginal
2024-07-16 16:27:201124Durchsuche

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 angeben

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

Image description

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn