Android 용 SpringFramework를 사용하여 입력 스트림을 가져 왔습니다.입력 스트림 메모리 부족 오류와 관련된 문제
@Override
public InputStream getImageStream(String url) {
InputStream is = new ByteArrayInputStream(template.getForObject(url, byte[].class));
return is;
}
처음 몇 개의 입력 스트림에 대해서는 정상적으로 진행됩니다. 전혀 문제는 없지만 매우 큰 입력 스트림을 얻으려고합니다. 그럼 나는 outofmemory 오류가 발생합니다.
이public byte[] readBytes(InputStream inputStream) throws IOException {
ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int len = 0;
while ((len = inputStream.read(buffer)) != -1) {
byteBuffer.write(buffer, 0, len);
}
byte[] byteArray= byteBuffer.toByteArray();
return byteArray;
}
이 코드의 아이디어를 잘 덩어리에서의 InputStream을 읽는 것입니다 :
나는 다음과 같은 코드를 사용하여 글을 많이 볼?그러나 readField 메서드를 시작하기 전에 내가 얻지 못한 outofmemory 오류가 있습니다. 사방에 리셋을 시도했는데 ... 어쩌면 readbytes 나 다른 무언가를 어딘가에서 지워야한다고 생각했습니다. 하지만 나는 그것이 어떻게 올바른지 모릅니다.
내가 잘못 생각하는 것 같아요? 나는 안드로이드와 자바에 매우 익숙하다. InputStream을 다른 방법으로 얻는 방법이 있는가? BufferedInputStream에 대해서도 읽었지만, 들어갈 수있는 방법을 생각할 수는 없습니다.
제 목표는 이미지의 얼룩을 데이터베이스에 저장하는 것입니다. 그리고 내 입력은 oauth를 통한 imgurl입니다.
다른 URL을 통해 입력 스트림의 품질이 떨어지는 버전을 호출 할 수도 있습니다. 그리고 모든 것은 작동합니다 ... 원본 이미지 URL로 시도하고 싶습니다. 아마도 나중에 사진을 인쇄하기 위해 원본을 다운로드 할 수 있기를 원하기 때문입니다.
그래서 저는 실제로 두 가지 일을하고 있습니까? readbytes 부분이 getimagestream 메소드에 있어야합니까? – Lokkio
'template.getForObject (url, byte []. class)'는 바이트 배열 대신에'InputStream'을 리턴해야합니다. – aim