Java로 파일 다운로드
-
Java에서
java.nio
패키지를 사용하여 파일 다운로드 -
Java에서
FileUtils.copyURLToFile()
을 사용하여 파일 다운로드 -
Java에서
Files.copy()
를 사용하여 파일 다운로드
이 기사에서는 다양한 방법을 사용하여 Java로 파일을 다운로드하는 방법을 설명합니다. 아래에서 Java로 파일을 다운로드하는 네 가지 방법을 볼 수 있습니다. 우리의 주요 초점은 예제에서 사용할 URL에서 파일을 다운로드하는 것입니다.
Java에서java.nio
패키지를 사용하여 파일 다운로드
이 자습서의 첫 번째 예제는 Java의 기존java.io
에 대한 개선 된 고급 대안 인java.nio
패키지를 사용합니다. nio
부분은New Input/Output
을 나타내며 이전 패키지보다 더 나은 기능을 제공합니다. java.nio
는 우리가 사용할 수있는 새로운 네트워킹 방법을 제공합니다.
다음 코드에서 먼저 파일을 다운로드하려는 URL을 사용하여URL
객체fetchWebsite
를 만듭니다. 다음으로fetchWebsite
에서 스트림을 읽는 채널을 구성하고Channels
클래스의newChannel()
메소드를 호출하여이를 수행합니다. 스트림을 생성하기 위해fetchWebsite
에서openStream()
을 호출합니다.
이제 지정된 이름으로 로컬에서 파일을 생성하는FileOutputStream
객체fos
를 생성합니다. 마지막으로transferFrom()
메소드를 사용하여 온라인 소스에서 파일을 가져옵니다. 이 메소드는 소스에서fos
에 기록하는FileChannel
로 데이터를 전송합니다. transferFrom()
은 세 개의 인수를 취합니다. 첫 번째는readableByteChannel
객체이고, 두 번째는 파일 쓰기를 시작하려는 위치, 즉 0 번째 위치와 마지막으로 전송할 최대 바이트 수입니다.
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
ReadableByteChannel readableByteChannel = Channels.newChannel(fetchWebsite.openStream());
try (FileOutputStream fos = new FileOutputStream("C:\\Users\\Downloads\\IntroToJava.pdf")) {
fos.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
}
}
}
Java에서FileUtils.copyURLToFile()
을 사용하여 파일 다운로드
온라인 소스에서 파일을 다운로드하는 다음으로 좋은 방법은 Apache Commons-IO 라이브러리에 포함 된FileUtils.copyUrlToFile()
메소드를 사용하는 것입니다.
프로젝트에 종속성을 포함하기 위해 다음 코드를 사용합니다.
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
아래에서 온라인 파일 리소스에 대한 링크가있는URL
개체를 만듭니다. 다음으로 다운로드 한 파일이 상주 할 수있는 로컬 파일을 만듭니다. 이를 위해File
클래스의 객체를 만들고 확장명이있는 파일 이름을 생성자에 전달합니다.
마지막으로URL
객체와file
객체라는 두 개의 인수를 사용하는FileUtils
클래스에서copyURLToFile()
메서드를 호출합니다.
import java.io.File;
import java.io.IOException;
import java.net.URL;
import org.apache.commons.io.FileUtils;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
File file = new File("JavaIo.pdf");
FileUtils.copyURLToFile(fetchWebsite, file);
}
}
Java에서Files.copy()
를 사용하여 파일 다운로드
첫 번째 예제와 마찬가지로java.nio
패키지를 사용하지만 다른 메소드를 호출합니다. copy()
는Files
클래스의 메소드입니다. 함수의 이름에서 알 수 있듯이 지정된 대상에 파일을 복사합니다.
코드에는 파일 소스를 가리키는URL
객체fetchWebsite
가 있습니다. 파일을 복사 할 대상을 알려주는Path
개체를 만듭니다. 다음으로, 온라인 리소스에서 바이트를 가져 오기 위해 스트림을 열고inputSteam
을copy()
에 전달합니다. 세 개의 인수를 사용하므로 첫 번째와 두 번째는inputStream
및path
개체이고 세 번째는CopyOption
또는 복사 작업을 수행해야하는 방법을 지정합니다. 파일이 이미있는 경우StandardCopyOption.REPLACE_EXISTING
을 사용하여 파일을 바꿉니다.
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
public class DownloadFile {
public static void main(String[] args) throws IOException {
URL fetchWebsite = new URL(
"https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Introduction%20to%20Java%20IO.pdf");
Path path = Paths.get("JavaIO.pdf");
try (InputStream inputStream = fetchWebsite.openStream()) {
Files.copy(inputStream, path, StandardCopyOption.REPLACE_EXISTING);
}
}
}
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn