Několik scénářů vyžaduje, abyste zkopírovali soubor v Javě. Možná vytváříte jednoduchý skript pro automatizaci procesů pro správce souborů. Můžete dokonce psát plnohodnotnou aplikaci, která pracuje se soubory.
Existuje mnoho způsobů, jak můžete zkopírovat soubor, v závislosti na požadovaném výkonu, jednoduchosti nebo dokonce na verzi Java, kterou používáte.
Jak kopírovat soubory pomocí FileInputStream a FileOutputStream
Tato metoda funguje tak, že ručně přečte každý bajt dat ze souboru a zapíše je do nového cíle. Na rozdíl od níže uvedené metody Files.copy můžete tuto metodu použít pro všechny verze Java, včetně Java 6 a starších.
Používá třídu FileInputStream ke čtení bajtů ze zdrojového souboru a třídu FileOutputStream k zápisu bajtů do cíle.
- Vytvořte soubor kdekoli v počítači s názvem „SimpleScript.java“.
- Otevřete soubor v textovém editoru nebo IDE a zkopírujte následující základní kód do aplikace.
import java.io. IOException;
třídaSimpleScript{
veřejnoststatickýprázdnotahlavní(Řetězcové argumenty[])hází IOException {
// Váš kód zde
}
} - Importujte tyto další třídy Input Stream a Output Stream v horní části souboru hned po prvním příkazu importu.
import java.io. Soubor;
import java.io. InputStream;
import java.io. OutputStream;
import java.io. FileInputStream;
import java.io. FileOutputStream; - Vytvořte nový soubor s názvem „Copy-File-1.txt“ ve stejné složce jako váš soubor SimpleScript.java. Do souboru přidejte jakýkoli psaný obsah.
- Ve stejné složce také vytvořte nový adresář s názvem "Cíl". Cílem je zkopírovat soubor "Copy-File-1.txt" do nové složky.
- Uvnitř hlavní funkce třídy použijte třídu File k vytvoření dvou nových objektů souboru. Zdroj, což bude soubor, který chcete zkopírovat, a cíl, kam chcete soubor zkopírovat. Pokud cílový soubor neexistuje, váš program vytvoří nový.
třídaSimpleScript{
veřejnoststatickýprázdnotahlavní(Řetězcové argumenty[])hází IOException {
// 1. způsob kopírování souboru
Zdroj souboru = Nový Soubor("Kopírovat-soubor-1.txt");
Cíl souboru = Nový Soubor("Cíl/Kopírovat-soubor-1.txt");
}
} - Poté vytvořte objekt InputStream a OutputStream.
Vstup InputStream = nula;
Výstup OutputStream = nula; - Použijte vstupní proud ke čtení dat v bajtech a výstupní proud k zápisu dat do nového umístění.
Snaž se {
// Vytvoří objekty FileInputStream a FileOutputStream
vstup = Nový FileInputStream (zdroj);
výstup = Nový FileOutputStream (cíl);
byte[] buf = Novýbyte[1024];
int bytesRead;// Zápis bajtů do cíle
zatímco ((bytesRead = input.read (buf)) > 0) {
output.write (buf, 0, bytesRead);
}
} úlovek (IOException e) {
e.printStackTrace();
System.out.println("Nelze zkopírovat soubor do cíle: " + destination.getPath() + ". Šek -li složka nebo soubor již existuje.");
} Konečně {
// Zavřete proudy
-li (vstup != nula) {
input.close();
}-li (výstup!= nula) {
output.close();
}
}System.out.println("Soubor zkopírován");
- Chcete-li skript spustit, otevřete příkazový řádek. Přejděte do složky, do které jste uložili svůj soubor Java, pomocí příkazu cd na Příkazový řádek systému Windows nebo terminálu Mac.
CD plocha počítače
- Chcete-li skript zkompilovat, uložte soubor Java a spusťte soubor Javac příkaz v příkazovém řádku:
javac SimpleScript.java
- Chcete-li spustit skript, použijte Jáva příkaz:
Měli byste vidět jeden řádek výstupu bez chyb:Java SimpleScript
- Chcete-li zobrazit zkopírovaný soubor, přejděte do složky Cíl.
- Otevřete soubor a zobrazte obsah, který váš program zkopíroval z původního souboru.
Jak kopírovat soubory pomocí Files.copy
Pokud používáte Java 7 nebo novější, můžete použít metodu Files.copy. Tato metoda je obecně jednodušší implementace. Podle Dokumentace Java, existuje několik přetížení funkce.
Například metoda Files.copy může také použít vstupní proud ke kopírování souborů z jednoho umístění do druhého, ale pomocí metody využívající méně kódu. Můžete také použít cesty nebo sami určit, jak chcete, aby metoda kopírovala váš soubor.
- Vytvořte nový soubor s názvem „Copy-File-2.txt“ ve stejné složce jako váš soubor SimpleScript.java. Do souboru přidejte jakýkoli psaný obsah.
- V horní části souboru přidejte importy pro "java.nio.file. Cesty“ a „java.nio.file. Třídy soubory“.
import java.nio.file. Cesty;
import java.nio.file. Soubory; - Přidejte dva řetězce představující relativní cestu k souboru pro zdrojový soubor a cíl. Použijte metodu Files.copy, která již zpracuje logiku kopírování souboru do cíle.
String copySource = "Kopírovat-soubor-2.txt";
String copyDestination = "Cíl/Kopírovat-soubor-2.txt";Snaž se {
Files.copy (Paths.get (copySource), Paths.get (copyDestination));
} úlovek (Výjimka e) {
System.out.println("Nelze zkopírovat soubor do cíle: " + copyDestination + ". Šek -li složka nebo soubor již existuje.");
}
System.out.println("2nd Soubor zkopírován"); - Spusťte skript pomocí příkazů Javac a Java.
- Chcete-li zobrazit zkopírovaný soubor, přejděte do složky Cíl.
Jak kopírovat soubory pomocí FileChannel.transferTo()
Podle Dokumentace JavaTato metoda může být potenciálně rychlejším způsobem kopírování souborů. To však bude záviset na způsobu implementace funkce.
- Vytvořte nový soubor s názvem „Copy-File-3.txt“ ve stejné složce jako váš soubor SimpleScript.java. Přidejte do tohoto souboru nějaký ukázkový obsah.
- V horní části SimpleScript.java importujte soubor „java.nio.channels. FileChannel" vedle tří předchozích běžných tříd souvisejících se soubory z balíčku io.
import java.io. Soubor;
import java.io. FileInputStream;
import java.io. FileOutputStream;
import java.nio.channels. FileChannel; - Vytvořte souborové objekty pro zdroj a cíl a použijte je k vytvoření vstupního toku a výstupního toku.
Soubor src = Nový Soubor("Kopírovat-soubor-3.txt");
Soubor dst = Nový Soubor("Cíl/Kopírovat-soubor-3.txt");
FileInputStream inStream = Nový FileInputStream (src);
FileOutputStream outStream = Nový FileOutputStream (dst); - Pomocí metody TransferTo z třídy FileChannel zkopírujte soubor na místo určení.
Snaž se {
FileChannel inChannel = inStream.getChannel();
FileChannel outChannel = outStream.getChannel();
inChannel.transferTo(0, inChannel.size(), outChannel);
} úlovek (Výjimka e) {
System.out.println("Nelze zkopírovat soubor do cíle: " + dst.getPath() + ". Šek -li složka nebo soubor již existuje.");
} Konečně {
// Zavřete proudy
inStream.close();
outStream.close();
}
System.out.println("3rd Soubor zkopírován"); - Spusťte skript pomocí příkazů Javac a Java.
- Chcete-li zobrazit zkopírovaný soubor, přejděte do složky Cíl.
Kopírování souborů v Javě je jen začátek
Existuje mnoho způsobů, jak můžete zkopírovat soubor v Javě. Tři možné způsoby zahrnují použití tradiční metody streamu, metody Files.copy nebo metody transferTo.
Existuje mnoho dalších operací správce souborů, které můžete provádět pomocí Java. Některé z nich zahrnují přesouvání souborů, mazání souborů nebo komprimování souborů. To může být užitečné naučit se, pokud potřebujete automatizovat určité procesy ve správci souborů.