Heim Java javaLernprogramm Fallstudie: Dateien kopieren

Fallstudie: Dateien kopieren

Jul 16, 2024 pm 04:27 PM

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

Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Wie kann ich funktionale Programmierungstechniken in Java implementieren? Wie kann ich funktionale Programmierungstechniken in Java implementieren? Mar 11, 2025 pm 05:51 PM

Wie kann ich funktionale Programmierungstechniken in Java implementieren?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen Node.js 20: wichtige Leistungssteigerung und neue Funktionen Mar 07, 2025 pm 06:12 PM

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

ICEBERG: Die Zukunft von Data Lake Tabellen ICEBERG: Die Zukunft von Data Lake Tabellen Mar 07, 2025 pm 06:31 PM

ICEBERG: Die Zukunft von Data Lake Tabellen

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden? Mar 17, 2025 pm 05:43 PM

Wie kann ich JPA (Java Persistence-API) für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden verwenden?

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?

See all articles