Kilka scenariuszy wymaga skopiowania pliku w Javie. Być może tworzysz prosty skrypt automatyzujący procesy menedżera plików. Możesz nawet pisać pełnowymiarową aplikację, która działa z plikami.

Istnieje wiele sposobów kopiowania pliku, w zależności od wymaganej wydajności, prostoty, a nawet używanej wersji Java.

Jak kopiować pliki za pomocą FileInputStream i FileOutputStream

Ta metoda polega na ręcznym odczytaniu każdego bajtu danych z pliku i zapisaniu go w nowym miejscu docelowym. W przeciwieństwie do poniższej metody Files.copy, tej metody można używać dla wszystkich wersji Java, w tym Java 6 i wcześniejszych.

Używa klasy FileInputStream do odczytywania bajtów z pliku źródłowego oraz FileOutputStream do zapisywania bajtów w miejscu docelowym.

  1. Utwórz plik w dowolnym miejscu na komputerze o nazwie „SimpleScript.java”.
  2. Otwórz plik w edytorze tekstu lub IDE i skopiuj następujący kod podstawowy do aplikacji.
    import java.io. IOWyjątek;

    klasaProsty skrypt{
    publicznystatycznypróżniaGłówny(argumenty ciągów[])rzuty IOException {
    // Twój kod tutaj
    }
    }

  3. instagram viewer
  4. Zaimportuj te dodatkowe klasy Input Stream i Output Stream w górnej części pliku, tuż po pierwszej instrukcji importu.
    import java.io. Plik;
    import java.io. Strumień wejściowy;
    import java.io. Strumień wyjściowy;
    import java.io. FileInputStream;
    import java.io. FileOutputStream;
  5. Utwórz nowy plik o nazwie „Copy-File-1.txt” w tym samym folderze, co plik SimpleScript.java. Dodaj dowolną pisemną treść w pliku.
  6. W tym samym folderze utwórz również nowy katalog o nazwie „Destination”. Celem jest skopiowanie pliku „Copy-File-1.txt” do nowego folderu.
  7. Wewnątrz głównej funkcji klasy użyj klasy File, aby utworzyć dwa nowe obiekty plików. Źródło, którym będzie plik, który chcesz skopiować, oraz miejsce docelowe, czyli miejsce, do którego chcesz skopiować plik. Jeśli plik docelowy nie istnieje, twój program utworzy nowy.
    klasaProsty skrypt{ 
    publicznystatycznypróżniaGłówny(argumenty ciągów[])rzuty IOException {
    // Pierwszy sposób na skopiowanie pliku
    Źródło pliku = Nowy Plik("Kopiuj-Plik-1.tekst");
    Miejsce docelowe pliku = Nowy File("Miejsce docelowe/Kopiuj-Plik-1.tekst");
    }
    }
  8. Następnie utwórz obiekt InputStream i OutputStream.
    Wejście InputStream = zero;
    Wyjście strumienia wyjściowego = zero;
  9. Użyj strumienia wejściowego, aby odczytać dane w bajtach, a strumienia wyjściowego, aby zapisać dane w nowej lokalizacji.
    próbować {
    // Utwórz obiekty FileInputStream i FileOutputStream
    wejście = Nowy FileInputStream (źródło);
    wyjście = Nowy FileOutputStream (miejsce docelowe);
    bajt[] buf = Nowybajt[1024];
    int bajtyCzytaj;

    // Zapisz bajty do miejsca docelowego
    podczas gdy ((bytesRead = input.read (buf)) > 0) {
    output.write (buf, 0, bajtyOdczyt);
    }
    } złapać (IOWyjątek e) {
    e.printStackTrace();
    System.out.println("Nie można skopiować pliku do miejsca docelowego: " + destination.getPath() + ". Sprawdzać jeśli folder lub plik już istnieje.");
    } wreszcie {
    // Zamknij strumienie
    jeśli (wejście != zero) {
    wejście.zamknij();
    }

    jeśli (wyjście != zero) {
    wyjście.zamknij();
    }
    }

    System.out.println("Plik skopiowany");

  10. Aby uruchomić skrypt, otwórz wiersz poleceń. Przejdź do folderu, w którym zapisałeś plik Java, używając polecenia cd na Wiersz polecenia systemu Windows lub terminal Mac.
    płyta CD Pulpit
  11. Aby skompilować skrypt, zapisz plik Java i uruchom Javac polecenie w linii poleceń:
    javac SimpleScript.java
  12. Aby uruchomić skrypt, użyj Jawa Komenda:
    java SimpleScript
    Powinieneś zobaczyć pojedynczy wiersz wyjścia bez błędów:
  13. Przejdź do folderu „Miejsce docelowe”, aby wyświetlić skopiowany plik.
  14. Otwórz plik, aby wyświetlić zawartość, którą program skopiował z oryginalnego pliku.

Jak kopiować pliki za pomocą Files.copy

Jeśli używasz środowiska Java 7 lub nowszego, możesz użyć metody Files.copy. Ta metoda jest ogólnie prostszą implementacją. Według Dokumentacja Java, istnieje wiele przeciążeń funkcji.

Na przykład metoda Files.copy może również używać strumienia wejściowego do kopiowania plików z jednej lokalizacji do drugiej, ale za pomocą metody wykorzystującej mniej kodu. Możesz także użyć ścieżek lub określić, w jaki sposób chcesz skopiować plik.

  1. Utwórz nowy plik o nazwie „Copy-File-2.txt” w tym samym folderze, co plik SimpleScript.java. Dodaj dowolną pisemną treść w pliku.
  2. U góry pliku dodaj importy dla pliku „java.nio.file. Ścieżki” i „java.nio.file. Pliki”.
    import java.nio.plik. Ścieżki;
    import java.nio.plik. Akta;
  3. Dodaj dwa ciągi reprezentujące względną ścieżkę pliku dla pliku źródłowego i docelowego. Użyj metody Files.copy, która będzie już obsługiwać logikę, aby skopiować plik do miejsca docelowego.
    String copySource = "Kopiuj-Plik-2.tekst";
    String copyDestination = "Miejsce docelowe/kopia-plik-2.tekst";

    próbować {
    Files.copy (Paths.get (copySource), Paths.get (copyDestination));
    } złapać (Wyjątek e) {
    System.out.println("Nie można skopiować pliku do miejsca docelowego: " + copyDestination + ". Sprawdzać jeśli folder lub plik już istnieje.");
    }
    System.out.println("2i plik skopiowany");

  4. Uruchom skrypt za pomocą poleceń Javac i Java.
  5. Przejdź do folderu „Miejsce docelowe”, aby wyświetlić skopiowany plik.

Jak kopiować pliki za pomocą FileChannel.transferTo()

Według Dokumentacja Java, ta metoda może być potencjalnie szybszym sposobem kopiowania plików. Będzie to jednak zależało od sposobu implementacji funkcji.

  1. Utwórz nowy plik o nazwie „Copy-File-3.txt” w tym samym folderze, co plik SimpleScript.java. Dodaj przykładową zawartość do tego pliku.
  2. W górnej części SimpleScript.java zaimportuj „java.nio.channels. FileChannel” obok trzech poprzednich wspólnych klas związanych z plikami z pakietu io.
    import java.io. Plik;
    import java.io. FileInputStream;
    import java.io. FileOutputStream;
    import kanały.java.nio. Kanał Pliku;
  3. Utwórz obiekty plików dla źródła i miejsca docelowego, a następnie użyj ich do utworzenia strumienia wejściowego i strumienia wyjściowego.
    Źródło pliku = Nowy Plik("Kopiuj-Plik-3.tekst");
    Plik dst = Nowy File("Miejsce docelowe/Kopiuj-Plik-3.tekst");
    FileInputStream inStream = Nowy FileInputStream (źródło);
    FileOutputStream outStream = Nowy StrumieńWyjściowy Plików (dst);
  4. Użyj metody TransferTo z klasy FileChannel, aby skopiować plik do miejsca docelowego.
    próbować {
    FileChannel inChannel = inStream.getChannel();
    FileChannel outChannel = outStream.getChannel();
    inChannel.transferTo(0, inChannel.size(), outChannel);
    } złapać (Wyjątek e) {
    System.out.println("Nie można skopiować pliku do miejsca docelowego: " + dst.getPath() + ". Sprawdzać jeśli folder lub plik już istnieje.");
    } wreszcie {
    // Zamknij strumienie
    inStream.close();
    outStream.zamknij();
    }
    System.out.println("3rd Plik skopiowany");
  5. Uruchom skrypt za pomocą poleceń Javac i Java.
  6. Przejdź do folderu „Miejsce docelowe”, aby wyświetlić skopiowany plik.

Kopiowanie plików w Javie to dopiero początek

Istnieje wiele sposobów kopiowania pliku w Javie. Trzy możliwe sposoby obejmują użycie tradycyjnej metody strumienia, metody Files.copy lub metody transferTo.

Istnieje wiele innych operacji menedżera plików, które można wykonać za pomocą języka Java. Niektóre z nich obejmują przenoszenie plików, usuwanie plików lub zipowanie plików. Mogą być przydatne do nauki, jeśli chcesz zautomatyzować niektóre procesy w menedżerze plików.