Java >> Java tutorial >  >> Tag >> new

Java kopi fil | Katalog | Nyt navn (Omdøb) med eksempler

Kopiering af filen hjælper med at ændre dataene uden at ændre de originale data. Samme som nogle gange krævede en kopi af en fil og ændring af en applikation. For eksempel har et fotoredigeringsprogram eller -software en kopi af det originale billede som en midlertidig fil. I dette selvstudie lærer du om at skrive et Java Copy File Program og mange relaterede eksempler på det.

Kopiering af en fil i java kommer under Filhåndtering. Det er vigtigt for dig at lære, hvordan du opretter, skriver, sletter og flytter filer programmatisk i java.

Måder at kopiere en fil i Java

Der er mange måder at kopiere en fil i java på. Her er nogle metoder til at gøre det:

  • NIO-klasser i java – java.nio.channels.FileChannel
  • Apache Commons IO FileUtils
  • Filklasse – copy() metode
  • Betjening ved hjælp af InputStream og OutputStream

Lad os begynde at se eksempler på Java Copy File

Alle eksempler i Java kopierer fil med et nyt navn (Omdøb). Du kan bruge det samme navn til den i den anden filsti.

1. Brug af Channel – NIO klasser i java

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

public class CopyFileExample
{
    public static void main(String[] args)
    {

        File oldFile =new File("test.txt");
        File newFile =new File("cook.txt");

        try {
            copyFileUsingNIO(oldFile,newFile);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    private static void copyFileUsingNIO(File sourceFile, File destinationFile) throws IOException {
        FileInputStream inputStream = new FileInputStream(sourceFile);
        FileOutputStream outputStream = new FileOutputStream(destinationFile);
        FileChannel inChannel = inputStream.getChannel();
        FileChannel outChannel = outputStream.getChannel();
        try {
            inChannel.transferTo(0, inChannel.size(), outChannel);
        } finally {
            inChannel.close();
            outChannel.close();
            inputStream.close();
            outputStream.close();
        }
    }
}

Output :Dette output vil være fælles for alle eksempler på filkopiering i java

2. Apache Commons IO FileUtils

Apache Commons IO har én metode, FileUtils.copyFile(File sourceFile, File destination file) nemt at kopiere en fil. Hvis du bruger en Apache Commons IO i projektet, kan du nemt bruge dens metoder og klasser.

Et link til biblioteket – https://commons.apache.org/proper/commons-io/download_io.cgi
*Apache Commons IO 2.6 (kræver JDK 1.7+)

import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;

public class CopyFileExample
{
    public static void main(String[] args)
    {

        File oldFile =new File("test.txt");
        File newFile =new File("cook.txt");

        try {
            copyFileUsingApacheCommonsIO(oldFile,newFile);
        } catch (IOException e) {
            e.printStackTrace();
        }

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

3. Filer klasse – copy() metode

Hvis du bruger en klasse, der bruger Java SE 7 Files, så skal copy() metoden blot udføre dit arbejde uden en masse kodelinje.

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class CopyFileExample
{
    public static void main(String[] args)
    {

        File oldFile =new File("test.txt");
        File newFile =new File("cook.txt");

        try {
            copyFileUsingJava7Files(oldFile,newFile);
        } catch (IOException e) {
            e.printStackTrace();
        }

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

4. Betjening ved hjælp af InputStream og OutputStream

Dette er en grundlæggende måde at kopiere en fil på. Det er langsommere end andre metoder på grund af blokering af IO og fuldt stream-orienteret.

import java.io.*;


public class CopyFileExample {
    public static void main(String[] args) {

        File oldFile = new File("test.txt");
        File newFile = new File("cook.txt");

        try {
            copyFileUsingIO(oldFile, newFile);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    private static void copyFileUsingIO(File sourceFile, File destinationFile) throws IOException {
        InputStream inputStreamData = null;
        OutputStream outputStreamData = null;

        try {
            inputStreamData = new BufferedInputStream(new FileInputStream(sourceFile));
            outputStreamData = new BufferedOutputStream(new FileOutputStream(destinationFile));
            byte[] buffer = new byte[1024];
            int length;
            while ((length = inputStreamData.read(buffer)) > 0) {
                outputStreamData.write(buffer, 0, length);
            }

        } finally {
            inputStreamData.close();
            outputStreamData.close();
        }
    }
}

Hvordan kopierer Java mappen?

Kopiering af en Java-kopimappe eller -bibliotek er det samme. Se nedenstående eksempel, hvordan man kopierer en mappe fra et sted til et andet sted. Bemærk - det vil kun kopiere mappen på filer (inde i filer i mappen).

Brug af klassen Filer – copy() metode, kan du bruge apache Apache Commons API til at kopiere mappe i Java.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class CopyFileExample {
    public static void main(String[] args) {

        Path sourceDirectory = Paths.get("dest");
        Path targetDirectory = Paths.get("dest1");

        //copy source to target using Files Class
        try {
            Files.copy(sourceDirectory, targetDirectory);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

Output:Du kan se output fra eksempel, kun mappekopiering ikke fil.

Spørgsmål: Hvordan kopierer man flere filer fra en mappe til en anden i java?

Svar: Du kan gøre det ved at bruge en af ​​ovenstående metoder. Først skal du tælle og få filstien med navnet på filerne ved hjælp af for-loop. Anvend derefter en af ​​metoderne i en løkke, indtil du kopierer alle filer.

Du skal følge denne vejledning og dette eksempel – Java Move File

Bemærk: Dette eksempel (projekt) er udviklet i IntelliJ IDEA 2018.2.6 (Community Edition)
JRE:11.0.1
JVM: OpenJDK 64-Bit Server VM af JetBrains s.r.o
macOS 10.14.1
Java version 11
Alle Java Copy File eri Java 11, så det kan ændre sig på anderledes end Java 9 eller 10 eller opgraderede versioner.|


Java tag