从Alfresco中的NodeRef返回java.io.File对象

时间:2016-07-29 07:17:07

标签: java alfresco

有没有简单的方法从NodeRef返回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 个答案:

答案 0 :(得分:1)

最简单的方法是use ContentService to get a ContentReader节点。完成后,请拨打ContentReader.getContent(File),来自javadocs:

  

从存储库直接获取文件

的内容      

所有资源都将自动关闭。

     

参数:      file - 要将内容写入的文件 - 它将被覆盖

虽然内容将存储在内容仓库中的磁盘上,但建议不要访问原始文件。安全的方法是创建一个Temp文件,然后让ReferenceError: FormatLongNumber is not defined 将节点的内容发送到它中