So kopieren Sie Dateien in Java von einem Verzeichnis in ein anderes
Quelle:
DZone Ich programmiere schon lange in Java und Sie werden es nicht glauben, aber vor Java 7 gab es in der Java-API keine Methode zum Kopieren von Dateien. Unsere einzige Möglichkeit bestand darin, es selbst zu schreiben und dabei FileInputStream, FileOutputStream und einen Puffer zu verwenden, um Bytes von einem zum anderen zu kopieren; Oder noch besser: Verwenden Sie die Methode
FileChannel.transferTo() oder Apache Commons FileUtils, die damals ein Lebensretter waren und auch heute noch existieren.
Das JDK hat sich mittlerweile weiterentwickelt und es gibt bereits eine anständige API zum Kopieren von Dateien von einem Verzeichnis in ein anderes. In diesem Artikel zeige ich Ihnen, wie wir vor Java 7 Dateien von einem Verzeichnis in ein anderes kopiert haben, sowie eine moderne Methode, die diese Aufgabe erheblich erleichtert.
1. Kopieren von Dateien von einem Verzeichnis in ein anderes vor Java 7
Abhängigkeit: Apache Commons IO
1.1 FileUtils.copyFile(Dateiquelle, Dateiziel) Diese Methode kopiert die Datei an einen neuen Speicherort und behält dabei den Zeitstempel der Datei bei. Außerdem wird der Inhalt der angegebenen Quelldatei in die angegebene Zieldatei kopiert. Das Verzeichnis mit der Zieldatei wird erstellt,
falls es nicht existiert . Wenn die Zieldatei vorhanden ist, wird sie von dieser Methode überschrieben.
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class FileCopyDemo {
public static void main(String args[]) {
File srcFile = new File("bin/HelloWorld.class");
File destFile = new File("target/HelloWorld.class");
try {
FileUtils.copyFile(srcFile, destFile);
System.out.println("File successfully copied in Java");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output:
System.out.println("File successfully copied in Java");
1.2 Kopieren einer Datei in ein Verzeichnis unter Beibehaltung eines Zeitstempels Diese Methode kopiert den Inhalt der angegebenen Quelldatei in eine Datei mit demselben Namen im angegebenen Zielverzeichnis. Das Zielverzeichnis wird erstellt, wenn
es nicht existiert . Wenn die Zieldatei vorhanden ist, wird sie von dieser Methode überschrieben.
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
public class Testing {
public static void main(String args[]) {
File srcFile = new File("bin/HelloWorld.class");
File destDir = new File("target");
try {
FileUtils.copyFileToDirectory(srcFile, destDir);
System.out.println("File successfully copied to destination directory in Java");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Output
File successfully copied to destination directory in Java
2. Kopieren Sie Dateien mithilfe der Java 7 NIO 2-API von einem Verzeichnis in ein anderes.
Java
7 verfügt über eine Standardmethode zum Kopieren von Dateien:
Files.copy . Es lässt sich in native E/A-Betriebssysteme integrieren, um eine hohe Leistung bereitzustellen.
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import static java.nio.file.StandardCopyOption.*;
import static java.nio.file.LinkOption.*;
public class FileCopyDemo {
public static void main(String args[]) {
try {
Path bytes = Files.copy(
new Java.io.File("bin/HelloWorld.class").toPath(),
new java.io.File("target/HelloWorld.class").toPath(),
REPLACE_EXISTING,
COPY_ATTRIBUTES,
NOFOLLOW_LINKS);
System.out.println("File successfully copied using Java 7 way");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Sie können Dateien auch in Java kopieren, indem Sie Code mit
FileInputStream und
FileOuputStream schreiben . Dies ist jedoch nicht erforderlich, wenn Sie Java 7 installiert haben. Die Apache Commons IO FileUtils-Klasse ist ebenfalls eine praktische Alternative.
Für das Kopieren und Übertragen von Dateien mit hoher Geschwindigkeit können Sie auch die Klassen java.nio und FileChannel nutzen . Beachten Sie jedoch, dass es in Windows einen Fehler gibt, der Sie daran hindert, mehr als 64 GB Kanaldaten zu übertragen.
Strings in Java
Quelle:
Dev.to Wie in anderen Programmiersprachen ist
ein String in Java eine Folge von Zeichen. Aber Java implementiert einen String nicht als Array von Zeichen, sondern behandelt ihn als vollständiges
String- Objekt .
So erstellen Sie ein String-Objekt mit dem neuen Schlüsselwort und den Literalen
Es gibt zwei Möglichkeiten, ein String-Objekt zu erstellen: mit dem Schlüsselwort new oder mit Literalen. Unter wörtlicher Darstellung versteht man die Darstellung seines Werts als Ganzzahl oder Zeichenfolge. Der folgende Code zeigt, wie wir mit dem neuen Schlüsselwort eine Zeichenfolge erstellen können.
String a = new String();
Wie wir wissen, wird das Schlüsselwort new verwendet, um eine Instanz dieser Klasse zu erstellen. Oben haben wir eine Instanz einer Zeichenfolge vom Typ „a“ ohne Zeichen erstellt. Um eine Zeichenfolge mit einem Wert darin zu erstellen, können Sie folgendermaßen vorgehen.
char name[] = {'x','y','z'}
String a = new String(chars);
Oben haben wir ein Zeichenarray
name[ ] mit den Werten „x“, „y“, „z“ erstellt und dieses komplette Array dann der Zeichenfolge „a“ zugewiesen. Wir haben den Konstruktor der
String- Klasse verwendet , um den Wert des Strings zu initialisieren. Wie wir oben gesehen haben, ist das Erstellen einer Zeichenfolge mit dem neuen Schlüsselwort etwas verwirrend und zeitaufwändig. Aber es gibt einen wirklich einfachen Weg, und hier kommen uns Literale zu Hilfe.
String s = "xyz";
So erstellen wir in Java mithilfe von Literalen einen String. Für jedes String-Literal in einem Programm erstellt Java automatisch ein String-Objekt mit einem bereitgestellten Anfangswert. Sie können ein String-Literal an einer beliebigen Stelle in einem Programm verwenden, um daraus ein String-Objekt zu erstellen.
Beispielzeichenfolge
Hier ist der Code für ein einfaches Hello World-Programm mit ein paar Zeilen.
public class HelloWorld {
public static void main(String args[]) {
String s1 = new String("Hello World using new keyword");
String s2 = "Hello World using literals";
System.out.println(s1);
System.out.println(s2);
}
}
GO TO FULL VERSION