2014-03-29 47 views
0

我是Neo4J的新生。我認爲我也是Java的新生,雖然我已經學習了2年。如何將圖片內容保存到Neo4J數據庫?關於Java IO

我想保存並在neo4j數據庫中讀取一張圖片,我有一個InputStream實例,它的cotent是一個圖片數據。我有一個Resoucre對象。它有一個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等數字

第二步我想從數據庫中讀取字節數組。

我把它放在資源對象中。並使用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(); 

這是一個Java Web項目。

我不知道爲什麼我必須首先在path(String path =「images」+ File.separator + titleString +「.jpg」;)中創建一個文件。

雖然我這樣做,我無法像打開圖片一樣打開文件。

現在我很沮喪。我不知道該怎麼做。你可以幫我嗎? 非常感謝。

PS: 我的英語很差,打賭你的容忍。

回答

2

首先不要這樣做。

將圖片存儲在文件系統或公共存儲(如s3,dropbox等)中,並將url或文件名保存在neo4j屬性中。

如果要將文件讀入byte [],請創建file.length()大小的數組,並使用右偏移量讀入該數組,直到爲止。 read()返回-1

+0

非常感謝。我像你所說的那樣對它進行了處理。這是我可以使用的唯一方法。 – JackWang

相關問題