JavaRush /Blog Java /Random-PL /Przerwa kawowa #99. Jak skopiować pliki z jednego katalog...

Przerwa kawowa #99. Jak skopiować pliki z jednego katalogu do drugiego w Javie. Stringi w Javie

Opublikowano w grupie Random-PL

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ą. Przerwa kawowa #99.  Jak skopiować pliki z jednego katalogu do drugiego w Javie.  Ciągi w Javie - 1JDK 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;



/**

* Java program to copy a file from one directory to another e.g. from src to dest

*

* @author Javin

*/

public class FileCopyDemo {



public static void main(String args[]) {



// Using Apache Commons FileUtils class

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;



/**

* Java program to copy a file from one directory to another like from src to dest

*

* @author Javin Paul

*/

public class Testing {



public static void main(String args[]) {



// Using Apache Commons FileUtils class

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.*;



/**

* Java program to copy file using Java 7 Files.copy() method

*

* @author Javin Paul

*/

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) {

// TODO Auto-generated catch block

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 . Przerwa kawowa #99.  Jak skopiować pliki z jednego katalogu do drugiego w Javie.  Ciągi w Javie - 2

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"); // Using new keyword
        String s2 = "Hello World using literals";

        System.out.println(s1);
        System.out.println(s2);
}
}
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION