Java에서 한 디렉토리에서 다른 디렉토리로 파일을 복사하는 방법
출처 :
DZone 오랫동안 Java로 프로그래밍을 해왔는데 믿기지 않으시겠지만 Java 7 이전에는 Java API에 파일을 복사하는 방법이 없었습니다. 우리의 유일한 옵션은 FileInputStream, FileOutputStream 및 버퍼를 사용하여 바이트를 서로 복사하여 직접 작성하는 것이었습니다. 또는 그 당시에는 생명의 은인이었고 오늘날에도 여전히 존재하는
FileChannel.transferTo() 메서드나 Apache Commons FileUtils를 사용하는 것이 더 좋습니다 .
JDK는 이제 발전했으며 한 디렉터리에서 다른 디렉터리로 파일을 복사하기 위한 적절한 API가 이미 있습니다. 이 기사에서는 Java 7 이전에 한 디렉토리에서 다른 디렉토리로 파일을 복사하는 방법과 이 작업을 훨씬 쉽게 만드는 현대적인 방법을 보여 드리겠습니다.
1. Java 7 이전에 한 디렉터리에서 다른 디렉터리로 파일 복사
종속성: Apache Commons IO
1.1 FileUtils.copyFile(파일 원본, 파일 대상) 이 메서드는 파일의 타임스탬프를 유지하면서 파일을 새 위치에 복사합니다. 또한 지정된 소스 파일의 내용을 지정된 대상 파일에 복사합니다. 대상 파일이 포함된 디렉터리가
없으면 생성됩니다 . 대상 파일이 존재하는 경우 이 메서드는 해당 파일을 덮어씁니다.
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 타임스탬프를 유지하면서 디렉터리에 파일 복사 이 방법은 지정된 소스 파일의 내용을 지정된 대상 디렉터리에 있는 동일한 이름의 파일로 복사합니다. 대상 디렉터리가
없으면 생성됩니다 . 대상 파일이 존재하는 경우 이 메서드는 해당 파일을 덮어씁니다.
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. Java 7 NIO 2 API를 사용하여 한 디렉터리에서 다른 디렉터리로 파일을 복사합니다.
Java
7 에는 파일을 복사하는 표준 방법인
Files.copy가 있습니다 . 네이티브 I/O O/S와 통합되어 고성능을 제공합니다.
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();
}
}
}
FileInputStream 및
FileOuputStream 을 사용하여 코드를 작성하여 Java로 파일을 복사할 수도 있지만 Java 7이 설치된 경우에는 필요하지 않습니다.Apache Commons IO FileUtils 클래스도 편리한 대안입니다.
고속 파일 복사 및 전송을 위해 java.nio 및 FileChannel 클래스 를 활용할 수도 있지만 Windows에는 64GB 이상의 채널 데이터를 전송하지 못하게 하는 버그가 있다는 점에 유의하세요.
자바의 문자열
출처:
Dev.to 다른 프로그래밍 언어와 마찬가지로 Java의
문자열은 일련의 문자입니다. 그러나 Java는 문자열을 문자 배열로 구현하지 않고 완전한
String 객체로 처리합니다 .
new 키워드와 리터럴을 사용하여 문자열 개체를 만드는 방법
문자열 객체를 생성하는 방법에는 new 키워드를 사용하거나 리터럴을 사용하는 두 가지 방법이 있습니다. 리터럴 표현은 해당 값을 정수 또는 문자열로 표현하는 것을 의미합니다. 아래 코드는 new 키워드를 사용하여 문자열을 생성하는 방법을 보여줍니다.
String a = new String();
우리가 알고 있듯이 new 키워드는 이 클래스의 인스턴스를 생성하는 데 사용됩니다. 위에서는 문자가 없는 "a" 유형 문자열의 인스턴스를 만들었습니다. 값이 포함된 문자열을 만들려면 다음과 같이 하면 됩니다.
char name[] = {'x','y','z'}
String a = new String(chars);
위에서는 "x", "y", "z" 값을 사용하여 문자 배열
이름[ ]을 만든 다음 이 전체 배열을 문자열 "a"에 할당했습니다.
String 클래스 의 생성자를 사용하여 문자열 값을 초기화했습니다. 위에서 본 것처럼 new 키워드를 사용하여 문자열을 생성하는 것은 약간 혼란스럽고 시간이 많이 걸립니다. 하지만 정말 간단한 방법이 있는데, 바로 여기서 리터럴이 우리를 구출해 줍니다.
String s = "xyz";
이것이 리터럴을 사용하여 Java에서 문자열을 만드는 방법입니다. 프로그램의 모든 문자열 리터럴에 대해 Java는 초기 값이 제공된 String 객체를 자동으로 생성합니다. 프로그램의 어느 곳에서나 문자열 리터럴을 사용하여 문자열 개체를 만들 수 있습니다.
예시 문자열
다음은 몇 줄로 구성된 간단한 Hello world 프로그램의 코드입니다.
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