아파치 공용 IO를 사용 하 여 주어진된 URL에서 파일을 다운로드 하려면 우리는 패키지의 FileUtils 클래스가 필요 합니다. 파일을 다운로드하는 데 필요한 코드는 한 줄뿐입니다. 인터넷 연결이 때때로 실패한다는 점을 고려할 때, 바이트 0에서 파일을 다시 다운로드하는 대신 다운로드를 다시 시작할 수 있게 하는 것이 유용합니다. 파일 채널을 정의 한 후 우리는 writeChannel 개체를 사용하여 파일 대상에 readread의 내용을 복사하는 transferFrom() 방법을 사용합니다. 성능 향상은 버퍼링에서 비롯됩니다. read() 메서드를 사용하여 한 번에 하나씩 바이트를 읽을 때 각 메서드 호출은 기본 파일 시스템에 대한 시스템 호출을 의미합니다. JVM이 read() 시스템 호출을 호출하면 프로그램 실행 컨텍스트가 사용자 모드에서 커널 모드로 전환되고 다시 전환됩니다. 위의 예제에서는 Java 코어 기능을 사용하여 URL에서 콘텐츠를 다운로드하는 방법을 설명했습니다. 또한 기존 라이브러리의 기능을 활용하여 성능 조정이 필요하지 않은 경우 작업을 쉽게 할 수 있습니다.
기본적으로 HttpURLConnection의 이 구현은 서버가 gzip 압축을 사용하도록 요청하고 URLConnection.getInputStream()의 호출자에 대한 데이터를 자동으로 압축 해제합니다. 이 경우 콘텐츠 인코딩 및 콘텐츠 길이 응답 헤더가 지워집니다. 요청 헤더에서 허용 가능한 인코딩을 설정하여 Gzip 압축을 비활성화할 수 있습니다: HttpURLConnection는 기본적으로 GET 메서드를 사용합니다. setDoOutput(true)이 호출된 경우 POST를 사용합니다. 다른 HTTP 메서드 (옵션, 머리, PUT, 삭제 및 TRACE)는 setRequestMethod (문자열)와 함께 사용할 수 있습니다. transferTo() 및 transferFrom() 메서드는 버퍼를 사용하여 스트림에서 읽는 것보다 더 효율적입니다. 기본 운영 체제에 따라 응용 프로그램 메모리에 바이트를 복사하지 않고 파일 시스템 캐시에서 파일로 직접 데이터를 전송할 수 있습니다. Java 코드를 사용하여 파일을 다운로드하는 방법에는 여러 가지가 있습니다. 다음은 작업을 수행하는 몇 가지 방법입니다: Java는 HTTP 또는 HTTPS 프로토콜을 통해 리소스에 액세스하는 HTTP 클라이언트 API를 제공합니다.
인터넷에 액세스하는 주요 클래스는 java.net.URL 클래스와 java.net.HttpURLConnection 클래스입니다.