2016-07-29 4 views
1

NodeRefからFileオブジェクトを返す簡単な方法はありますか?私はノードを一時ファイルに変換していますが、動作しますが、実用的ではないようです。ここに私のコードです:AlfrescoのNodeRefからjava.io.Fileオブジェクトを返します

public File getTempCopyAsFile() throws IOException{ 
    File tempFile = TempFileProvider.createTempFile("temp_"+this.getDocName(), this.getDocExtension()); 
    try (InputStream is = this.getReader().getContentInputStream()){ 
     FileUtils.copyInputStreamToFile(is, tempFile); 
    } 
    return tempFile; 
} 

public ContentReader getReader() { 
    return contentService.getReader(nodeRef, ContentModel.PROP_CONTENT); 
} 

public String getName() { 
    return (String) nodeService.getProperty(nodeRef, ContentModel.PROP_NAME); 
} 

public String getDocExtension() { 
    return "." + FilenameUtils.getExtension(this.getName()); 
} 

public String getDocName() { 
    return FilenameUtils.removeExtension(this.getName()); 
} 

答えて

1

最も簡単な方法はノードのuse ContentService to get a ContentReaderです。

すべてのリソースが自動的に閉じられますをファイルに、リポジトリダイレクトからコンテンツを取得します:あなたはそれを持っていたら、javadocをからこれ、ContentReader.getContent(File)を呼び出します。

パラメータ: ファイル - に内容を書き込むファイル - コンテンツはRAWファイルにアクセスし、コンテンツのレポ内のディスク上のどこかに保存されるが、それは

を上書きされることはお勧めしません。安全な方法は、Tempファイルを作成してから ContentReaderにノードの内容を送信することです。

+0

これは私がやっていることです。 – newzad

+0

いいえ、そうではありません。あなたは入力ストリームを使いこなしています。Alfrescoにストリームを直接あなたに送ることができます。 – Gagravarr

関連する問題