java 이미지 다운로드

문제는 확실히 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 실패합니다. 모든 논리를 Callable로 래핑하거나 기존 라이브러리를 사용할 수 있습니다. 성능 측면에서 이 코드는 섹션 2에서 설명한 코드와 동일합니다. 이 스트림의 전체 콘텐츠를 지정된 스트림 인수에 씁니다. 나는 NASA 웹 사이트에서 이미지를 다운로드해야합니다. 문제는 내 코드가 때때로 이미지를 성공적으로 다운로드하는 동시에 때로는 186B만 저장한다는 것입니다 (정확히 186 이시면 모르겠습니다). 섹션 2의 코드와 또 다른 미묘한 차이입니다. FileOutputStream이 true로 설정된 추가 매개 변수로 열립니다: 이미지를 다운로드하고 원본 파일 이름을 사용하여 이미지를 저장합니다. 핵심은 InputStream을 사용하여 이미지를 읽고 OutputStream을 사용하여 파일에 쓰는 것입니다. 위의 예는 매우 상세하지만 다행히도 Java 7에서는 IO 작업을 처리하기위한 도우미 메서드가 들어있는 Files 클래스가 있습니다.

Files.copy() 메서드를 사용하여 InputStream에서 모든 바이트를 읽고 로컬 파일에 복사할 수 있습니다: 186바이트 파일을 받으면 텍스트 편집기로 파일을 열고 내부에 있는 것을 볼 수 있습니다. HTML 형식으로 HTTP 오류 메시지가 포함될 수 있습니다. 대신 이미지 파일의 처음 186 바이트가 표시되면 프로그램에서 제대로 작동하지 않는 것입니다. 스택 오버플로우에 대한 답변을 참여해 주셔서 감사합니다! 공개 정적 보이드 저장이미지(문자열 imageUrl)는 IOException { URL = 새 URL(imageUrl)을 throw합니다. 문자열 파일 이름 = url.getFile(); 문자열 destName = „./그림” + fileName.substring(fileName.lastIndexOf(„/”))); System.out.println(가장 이름); 입력 스트림은 = url.openStream(); 출력 스트림 os = 새 파일 출력 스트림 (destName); 바이트[] b = 새 바이트[2048]; int 길이; 동안 ((길이 = is.read(b)) != -1) { os.write (b, 0, 길이); } is.close(); os.close(); } 이 문서에서는 Java의 URL에서 파일을 다운로드할 수 있는 몇 가지 방법을 보았습니다. URL에서 파일을 다운로드하려면 이 한 줄짜리 라이너를 사용할 수 있습니다. 기본 구현은 ArrayList에 수신된 HTTP 청크를 누적합니다. 이로 인해 메모리 사용량이 높거나 대용량 파일을 다운로드하려고 할 때 OutOfMemory 예외가 발생할 수 있습니다. 웹 서버에 이미지를 업로드하는 방법을 살펴보겠습니다. BufferedImage를 바이트 배열로 변환하여 서버로 보냅니다. 이제 파일의 총 콘텐츠 크기가 있으므로 파일이 부분적으로 다운로드되었는지 확인할 수 있습니다. 이 경우 디스크에 기록된 마지막 바이트에서 다운로드를 다시 시작합니다: 이 메서드는 바이트 배열 출력 스트림의 유효한 바이트 수를 0으로 재설정하여 스트림의 누적된 모든 출력이 삭제되도록 합니다.

Comentariile sunt închise.