Java로 파일 다운로드

Rupam Yadav 2023년10월12일
  1. Java에서java.nio패키지를 사용하여 파일 다운로드
  2. Java에서FileUtils.copyURLToFile()을 사용하여 파일 다운로드
  3. Java에서Files.copy()를 사용하여 파일 다운로드
Java로 파일 다운로드

이 기사에서는 다양한 방법을 사용하여 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개체를 만듭니다. 다음으로, 온라인 리소스에서 바이트를 가져 오기 위해 스트림을 열고inputSteamcopy()에 전달합니다. 세 개의 인수를 사용하므로 첫 번째와 두 번째는inputStreampath개체이고 세 번째는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 Yadav
Rupam Yadav avatar Rupam Yadav avatar

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