우리의 프로그램 개발에서 우리는 종종 java.sql.blob, byte [] 및 inputstream 사이의 상호 변환을 사용하지만 JDK API에서는 사용 가능한 API를 직접 제공하지 않습니다. 다음 프로그램 조각은 주로 그들 사이의 교환 가능한 유용성을 구현합니다.
1. 바이트 [] => blob
우리는 다음과 같은 Hibernate가 제공 한 명령문 방법을 구현할 수 있습니다.
org.hibernate.hibernate.hibernate.createblob (New Byte [1024]);
2. blob => 바이트 []
현재 더 나은 API가 발견되지 않으므로 직접 구현할 수 있습니다. 예는 다음과 같습니다.
/ ** * BLOB 유형을 바이트 배열 유형으로 변환 * @param blob * @return */ private byte [] blobtobytes (blob blob) {bufferedInputStream is = null; try {is = new bufferedInputStream (blob.getBinaryStream ()); 바이트 [] 바이트 = 새로운 바이트 [(int) blob.length ()]; int len = bytes.length; int 오프셋 = 0; int read = 0; while (offset <len && (read = is.read (bytes, offset, len -offset))> = 0) {offset += read; } 반환 바이트; } catch (예외 e) {return null; } 마침내 {try {is.close (); is = null; } catch (ioexception e) {return null; }}}3. inputStream => 바이트 []
private byte [] inputStreamTobyte (inputStream is)는 ioException {bytearRayoutputStream bytestream = 새로운 ByTearRayoutputStream (); int ch; while ((ch = is.read ())! = -1) {bytestream.write (ch); } byte imgdata [] = bytestream.tobytearRay (); bytestream.close (); 반환 IMGDATA; }4. 바이트 [] => 입력 스트림
바이트 []의 입력 스트림으로의 변환은 간단합니다. 입력 스트림은 = 새로운 바이 테어 레이 니트 스트림 (New Byte [1024]);
5. 입력 스트림 => 블로브
최대 절전 모드를 통해 제공 될 수있는 API : Hibernate.createBlob (새 FileInputStream ( "그림/파일과 같은 경로가 될 수 있음));
6. blob => 입력 스트림
제공된 API를 통해 직접 호출 할 수있는 블로그 전송 : new blob (). getBinaryStream ();
위의 클립은 독자를위한 참조로 사용할 수 있습니다.
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!