Heim > Java > JavaBase > Wie kopiere ich Dateien in Java?

Wie kopiere ich Dateien in Java?

Freigeben: 2019-12-03 13:35:39
Original
8831 Leute haben es durchsucht

Wie kopiere ich Dateien in Java?

So kopieren Sie Dateien in Java: (Empfohlen: Java-Video-Tutorial)

1. Verwenden FileStreams-Kopieren

Dies ist die klassischste Methode, den Inhalt einer Datei in eine andere zu kopieren. Verwenden Sie FileInputStream, um die Bytes von Datei A zu lesen, und verwenden Sie FileOutputStream, um in Datei B zu schreiben. Dies ist der Code für die erste Methode:

private static void copyFileUsingFileStreams(File source, File dest)
        throws IOException {    
    InputStream input = null;    
    OutputStream output = null;    
    try {
           input = new FileInputStream(source);
           output = new FileOutputStream(dest);        
           byte[] buf = new byte[1024];        
           int bytesRead;        
           while ((bytesRead = input.read(buf)) != -1) {
               output.write(buf, 0, bytesRead);
           }
    } finally {
        input.close();
        output.close();
    }
}
Nach dem Login kopieren

Wie Sie sehen können, führen wir mehrere Lese- und Schreibvorgänge für die Versuchsdaten durch, daher sollte dies ein ineffizienter Vorgang sein, wie wir in der nächsten neuen Methode sehen werden .

2. Verwenden Sie FileChannel zum Kopieren

Java NIO enthält die transferFrom-Methode, die laut Dokumentation schneller sein sollte als das Kopieren von Dateiströmen. Dies ist der Code für die zweite Methode:

private static void copyFileUsingFileChannels(File source, File dest) throws IOException {    
        FileChannel inputChannel = null;    
        FileChannel outputChannel = null;    
    try {
        inputChannel = new FileInputStream(source).getChannel();
        outputChannel = new FileOutputStream(dest).getChannel();
        outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
    } finally {
        inputChannel.close();
        outputChannel.close();
    }
}
Nach dem Login kopieren

3. Verwenden Sie Commons IO zum Kopieren

Apache Commons IO bietet eine Methode zum Kopieren von Dateien seine FileUtils-Klasse, die zum Kopieren einer Datei an einen anderen Ort verwendet werden kann. Es ist sehr praktisch, die Apache Commons-Klasse FileUtils zu verwenden, die Sie bereits in Ihrem Projekt verwenden. Grundsätzlich verwendet diese Klasse intern Java NIO FileChannel. Dies ist der Code der dritten Methode:

 private static void copyFileUsingApacheCommonsIO(File source, File dest)
         throws IOException {
     FileUtils.copyFile(source, dest);
 }
Nach dem Login kopieren

Der Kerncode dieser Methode lautet wie folgt:

private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate) throws IOException {
        if (destFile.exists() && destFile.isDirectory()) {
            throw new IOException("Destination '" + destFile + "' exists but is a directory");
        }

        FileInputStream fis = null;
        FileOutputStream fos = null;
        FileChannel input = null;
        FileChannel output = null;
        try {
            fis = new FileInputStream(srcFile);
            fos = new FileOutputStream(destFile);
            input  = fis.getChannel();
            output = fos.getChannel();
            long size = input.size();
            long pos = 0;
            long count = 0;
            while (pos < size) {
                count = size - pos > FILE_COPY_BUFFER_SIZE ? FILE_COPY_BUFFER_SIZE : size - pos;
                pos += output.transferFrom(input, pos, count);
            }
        } finally {
            IOUtils.closeQuietly(output);
            IOUtils.closeQuietly(fos);
            IOUtils.closeQuietly(input);
            IOUtils.closeQuietly(fis);
        }

        if (srcFile.length() != destFile.length()) {
            throw new IOException("Failed to copy full contents from '" +
                    srcFile + "' to '" + destFile + "'");
        }
        if (preserveFileDate) {
            destFile.setLastModified(srcFile.lastModified());
        }
    }
Nach dem Login kopieren

Es ist ersichtlich, dass das Prinzip der Verwendung von Apache Commons IO zum Kopieren von Dateien das ist zweite Methode oben: Verwenden Sie FileChannel copy

Viertens verwenden Sie die Files-Klasse von Java7 zum Kopieren

Wenn Sie etwas Erfahrung mit Java 7 haben Möglicherweise wissen Sie, dass Sie die Dateikopiermethode der Dateiklasse verwenden können, um von einer Datei in eine andere zu kopieren. Dies ist der Code der vierten Methode:

 private static void copyFileUsingJava7Files(File source, File dest)
         throws IOException {    
         Files.copy(source.toPath(), dest.toPath());
}
Nach dem Login kopieren

Für weitere Java-Kenntnisse beachten Sie bitte die Spalte Java Basic Tutorial.

Das obige ist der detaillierte Inhalt vonWie kopiere ich Dateien in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage