Warning: count(): Parameter must be an array or an object that implements Countable in /home/forge/martingrosjean.com/wp-content/plugins/pixproof/features/metaboxes/init.php on line 718
java 이미지 다운로드 - Martin Grosjean
 
j

문제는 확실히 NASA가 그 사진을 sahres 하는 방법과 연결되어 있습니다. 예를 들어 해당 링크 https://mars.jpl.nasa.gov/msl-raw-images/msss/00001/mcam/0001ML0000001000I1_DXXX.jpg 이미지가 성공적으로 저장되고 해당 링크에서 https://mars.nasa.gov/mer/gallery/all/2/f/001/2F126468064EDN0000P1001L0M1-BR.JPG 실패합니다. IO 작업에 매우 많이 사용되는 또 다른 라이브러리는 아파치 커먼스 IO입니다. Javadoc에서 일반 파일 조작 작업에 사용되는 FileUtils라는 유틸리티 클래스가 있음을 알 수 있습니다. 마지막으로 전체 파일을 읽기 전에 연결이 실패하면 다운로드를 다시 시작할 수 있는 방법에 대해 설명하겠습니다. Range 헤더를 사용하는 또 다른 일반적인 방법은 다른 바이트 범위를 설정하여 청크에서 파일을 다운로드하는 것입니다. 예를 들어 2KB 파일을 다운로드하려면 범위 0 – 1024 및 1024 ~ 2048을 사용할 수 있습니다. 모든 논리를 Callable로 래핑하거나 기존 라이브러리를 사용할 수 있습니다. SaveImageFromUrl 클래스는 이 기술을 보여 줍니다. 이미지에 대한 URL 개체를 얻은 다음 이 이미지에 대한 입력 스트림을 가져옵니다. FileOutputStream을 통해 파일에 대한 출력 스트림을 만듭니다.

표준 Java 스트림 처리를 사용하면 입력 스트림이 while 루프를 통해 청크로 읽히고 바이트가 출력 스트림에 기록됩니다. 서버에서 다음 이미지를 다운로드합니다. 186바이트 파일을 받으면 텍스트 편집기에서 파일을 열고 내부에 무엇이 있는지 확인합니다. HTML 형식으로 HTTP 오류 메시지가 포함될 수 있습니다. 대신 이미지 파일의 처음 186 바이트가 표시되면 프로그램에서 제대로 작동하지 않는 것입니다. 스택 오버플로우에 대한 답변을 참여해 주셔서 감사합니다! ReadableByteChannel 클래스의 transferFrom() 메서드를 사용하여 지정된 URL에서 FileChannel으로 바이트를 다운로드합니다. 또한 일반적으로 파일을 다운로드하는 작업은 HTTP를 통해 수행되므로 AsyncHttpClient 라이브러리를 사용하여 이 작업을 수행하는 방법을 보여 주어 도왔습니다. transferTo() 및 transferFrom() 메서드는 버퍼를 사용하여 스트림에서 읽는 것보다 더 효율적입니다. 기본 운영 체제에 따라 응용 프로그램 메모리에 바이트를 복사하지 않고 파일 시스템 캐시에서 파일로 직접 데이터를 전송할 수 있습니다. 스트림에 오프셋오프에서 시작 바이트의 len 수를 씁니다.