Jak skopiować pliki z jednego katalogu do drugiego w Javie
Źródło:
DZone Programuję w Javie od dłuższego czasu i nie uwierzysz, ale przed Javą 7 nie było metody kopiowania plików w Java API. Naszą jedyną opcją było napisanie tego sami, używając FileInputStream, FileOutputStream i bufora do kopiowania bajtów między bajtami; lub jeszcze lepiej, użyj metody
FileChannel.transferTo() lub Apache Commons FileUtils, które w tamtych czasach ratowały życie i nadal istnieją.
JDK ewoluował i istnieje już przyzwoite API do kopiowania plików z jednego katalogu do drugiego. W tym artykule pokażę, jak kopiowaliśmy pliki z jednego katalogu do drugiego przed Javą 7, a także nowoczesny sposób, który znacznie ułatwi to zadanie.
1. Kopiowanie plików z jednego katalogu do drugiego przed wersją Java 7
Zależność: Apache Commons IO
1.1 FileUtils.copyFile(źródło pliku, miejsce docelowe pliku) Ta metoda kopiuje plik do nowej lokalizacji, zachowując znacznik czasu pliku. Kopiuje także zawartość określonego pliku źródłowego do określonego pliku docelowego. Katalog zawierający plik docelowy jest tworzony,
jeśli nie istnieje . Jeśli plik docelowy istnieje, ta metoda go zastąpi.
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 Kopiowanie pliku do katalogu z zachowaniem znacznika czasu Ta metoda kopiuje zawartość określonego pliku źródłowego do pliku o tej samej nazwie w określonym katalogu docelowym. Katalog docelowy jest tworzony, jeśli
nie istnieje . Jeśli plik docelowy istnieje, ta metoda go zastąpi.
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. Skopiuj pliki z jednego katalogu do drugiego, korzystając z interfejsu API Java 7 NIO 2.
W Javie
7 dostępna jest standardowa metoda kopiowania plików:
Files.copy . Integruje się z natywnymi systemami I/O/S, zapewniając wysoką wydajność.
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();
}
}
}
Możesz także kopiować pliki w Javie, pisząc kod przy użyciu
FileInputStream i
FileOuputStream , ale nie jest to konieczne, jeśli masz zainstalowaną Javę 7. Klasa Apache Commons IO FileUtils jest również przydatną alternatywą. Do szybkiego kopiowania i przesyłania plików możesz także skorzystać z klas java.nio i
FileChannel , ale pamiętaj, że w systemie Windows występuje błąd, który uniemożliwia przesyłanie więcej niż 64 GB danych kanału.
Stringi w Javie
Źródło:
Dev.to Podobnie jak inne języki programowania,
ciąg znaków w Javie to ciąg znaków. Ale Java nie implementuje łańcucha jako tablicy znaków, ale traktuje go jako kompletny obiekt
String .
Jak utworzyć obiekt ciągu przy użyciu nowego słowa kluczowego i literałów
Istnieją dwa sposoby tworzenia obiektu typu string: przy użyciu słowa kluczowego new lub przy użyciu literałów. Reprezentacja dosłowna oznacza reprezentowanie jej wartości jako liczby całkowitej lub ciągu znaków. Poniższy kod pokazuje, jak możemy utworzyć ciąg znaków za pomocą słowa kluczowego new.
String a = new String();
Jak wiemy, słowo kluczowe new służy do tworzenia instancji tej klasy. Powyżej utworzyliśmy instancję ciągu typu „a” bez znaków. Aby utworzyć ciąg znaków zawierający wartość, możesz to zrobić w ten sposób.
char name[] = {'x','y','z'}
String a = new String(chars);
Powyżej utworzyliśmy tablicę znaków
name[ ] o wartościach „x”, „y”, „z”, a następnie przypisaliśmy tę kompletną tablicę do ciągu „a”. Do zainicjowania wartości łańcucha użyliśmy konstruktora klasy
String . Jak widzieliśmy powyżej, utworzenie ciągu znaków przy użyciu słowa kluczowego new jest nieco mylące i czasochłonne. Istnieje jednak bardzo prosty sposób i tutaj z pomocą przychodzą nam literały.
String s = "xyz";
W ten sposób tworzymy ciąg w Javie za pomocą literałów. Dla każdego literału łańcuchowego w programie Java automatycznie tworzy obiekt String z podaną mu wartością początkową. Możesz użyć literału ciągu w dowolnym miejscu programu, aby utworzyć z niego obiekt ciągu.
Przykładowy ciąg
Oto kod prostego programu Hello world składający się z kilku linii.
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