마지막으로 전체 파일을 읽기 전에 연결이 실패하면 다운로드를 다시 시작할 수 있는 방법에 대해 설명하겠습니다. onBodyPartReceived() 메서드를 재정의했습니다. 기본 구현은 ArrayList에 수신된 HTTP 청크를 누적합니다. 이로 인해 메모리 사용량이 높거나 대용량 파일을 다운로드하려고 할 때 OutOfMemory 예외가 발생할 수 있습니다. 파일 호스팅 서비스에서 더 빠르고 쉽게 다운로드 Range 헤더를 사용하는 또 다른 일반적인 방법은 다른 바이트 범위를 설정하여 청크에서 파일을 다운로드하는 것입니다. 예를 들어 2KB 파일을 다운로드하려면 범위 0 – 1024 및 1024 ~ 2048을 사용할 수 있습니다. 컴퓨터 나 장치에 파일이나 이미지를 저장하려면 다운로드하십시오. 파일이 기본 다운로드 위치에 저장됩니다. 파일을 다운로드하는 데 사용할 수 있는 가장 기본적인 API는 Java IO입니다. URL 클래스를 사용하여 다운로드하려는 파일에 대한 연결을 열 수 있습니다.

파일을 효과적으로 읽으려면 openStream() 메서드를 사용하여 InputStream: transferTo() 및 transferFrom() 메서드는 버퍼를 사용하여 스트림에서 읽는 것보다 더 효율적입니다. 기본 운영 체제에 따라 응용 프로그램 메모리에 바이트를 복사하지 않고 파일 시스템 캐시에서 파일로 직접 데이터를 전송할 수 있습니다. 컴퓨터에서 파일 이름 옆에 있는 파일을 찾으려면 폴더에 있는 아래쪽 화살표 표시 또는 Finder의 추가 보기 보기를 클릭합니다. 다운로드한 파일도 다운로드 페이지에 나열됩니다. AsyncHttpClient는 Netty 프레임워크를 사용하여 비동기 HTTP 요청을 실행하기 위한 인기 있는 라이브러리입니다. 파일 URL에 대한 GET 요청을 실행하고 파일 콘텐츠를 얻는 데 사용할 수 있습니다. 모든 디스크 공간을 사용하지 않고도 Mac 또는 PC에서 직접 주문형으로 모든 Google 드라이브 파일에 액세스할 수 있는 새로운 방법입니다. 이 문서에서는 Java의 URL에서 파일을 다운로드할 수 있는 몇 가지 방법을 보았습니다. 성능 향상은 버퍼링에서 비롯됩니다. read() 메서드를 사용하여 한 번에 하나씩 바이트를 읽을 때 각 메서드 호출은 기본 파일 시스템에 대한 시스템 호출을 의미합니다.

JVM이 read() 시스템 호출을 호출하면 프로그램 실행 컨텍스트가 사용자 모드에서 커널 모드로 전환되고 다시 전환됩니다. URL에서 파일을 읽으려면 URL 스트림에서 새 ReadableByteChannel을 만듭니다. getBodyByteBuffer() 메서드를 사용하여 ByteBuffer를 통해 본문 부품 콘텐츠에 액세스합니다. 이 자습서에서는 파일을 다운로드하는 데 사용할 수 있는 몇 가지 방법을 살펴보겠습니다. 위의 예는 매우 상세하지만 다행히도 Java 7에서는 IO 작업을 처리하기위한 도우미 메서드가 들어있는 Files 클래스가 있습니다. Files.copy() 메서드를 사용하여 InputStream에서 모든 바이트를 읽고 로컬 파일에 복사할 수 있습니다. 이 구현은 전체 파일을 메모리에 로드하지 않으므로 대용량 파일에서도 안전하게 사용할 수 있습니다. IO 작업에 매우 많이 사용되는 또 다른 라이브러리는 아파치 커먼스 IO입니다. Javadoc에서 일반 파일 조작 작업에 사용되는 FileUtils라는 유틸리티 클래스가 있음을 알 수 있습니다. ReadableByteChannel에서 읽은 바이트는 다운로드 할 파일에 해당하는 FileChannel로 전송됩니다 : 다운로드 를 검색하고 무료로 하나에 음악을 듣고 지금 우리는 파일의 전체 콘텐츠 크기를 가지고, 우리는 우리의 파일이 부분적으로 다운로드 되어 있는지 여부를 확인할 수 있습니다.

그렇다면 디스크에 기록된 마지막 바이트에서 다운로드를 다시 시작하겠습니다: 또한 일반적으로 파일을 HTTP를 통해 다운로드하기 때문에 AsyncHttpClient 라이브러리를 사용하여 이 작업을 수행할 수 있는 방법을 보여 주어 도있습니다.