2014-03-29 1 views
0

저는 Neo4J의 신입생입니다. 나는 가까운 2 년 동안 그것을 배웠지 만 나는 또한 자바의 신입생이라고 생각한다.그림 콘텐츠를 Neo4J 데이터베이스에 저장하는 방법은 무엇입니까? Java IO 정보

neo4j 데이터베이스에서 그림을 저장하고 싶습니다. InputStream 인스턴스가 있습니다. 그 사본은 그림 데이터입니다. Resoucre Object가 있습니다. 그것은 그림 데이터를 저장하는 데 사용되는 byte [] 속성을 가지고있다. 그래서 그렇게 할 것입니다.

public static Resource getResourceInstance(InputStream in, String title) throws IOException{ 
    StringBuilder sb = new StringBuilder(); 
    BufferedInputStream input = new BufferedInputStream(in); 
    int b; 
    while((b = input.read()) != -1){ 
     sb.append(b); 
    } 
    input.close(); 
    in.close(); 
    return new Resource(sb.toString().getBytes(), title, 0, 0); 
} 

그런 다음 트랜잭션을 사용하여 neo4j에 저장합니다. neo4j-server로 확인합니다. 데이터베이스에서 바이트 배열은 51,52,45와 같은 숫자입니다.

두 번째 단계 데이터베이스에서 바이트 배열을 읽고 싶습니다.

저는 이것을 Resource Object에 넣었습니다. FileOutputStream을 사용하면 다음과 같은 코드를 읽을 수 있습니다.

 images = resource.getImage(); 
     String titleString = resource.getTitle(); 
     String path = "images" + File.separator + titleString + ".jpg"; 
     System.out.println(Paths.get(path).toRealPath()); 
     BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(path))); 
     out.write(images); 
     out.close(); 

이것은 자바 웹 프로젝트입니다.

왜 나는 경로 (String path = "images"+ File.separator + titleString + ".jpg";)에 파일을 만들어야하는지 잘 모릅니다.

그래도 그림처럼 파일을 열 수 없습니다.

저는 매우 불쾌합니다. 나는 어떻게해야 할지를 모른다. 너 나 좀 도와 줄 수있어? 대단히 감사합니다.

추 신 : 영어가 부족합니다. 용인하십시오.

답변

2

처음에는이 작업을 수행하지 마십시오.

사진을 파일 시스템이나 s3, dropbox 등과 같은 공용 저장소에 저장하고 neo4j 속성에 URL 또는 파일 이름을 저장하십시오.

파일을 바이트 []로 읽으려면 file.length() 크기의 배열을 만들고 오른쪽 오프셋을 사용하여 해당 배열을 읽습니다. read()는 -1을 반환합니다.

+0

대단히 고마워요. 네가 말한 것처럼 나는 그것을 흘 렸어. 그것은 제가 사용할 수있는 유일한 방법입니다. – JackWang

관련 문제