【问题标题】:FileEntry.getContentType() needs to be closed?FileEntry.getContentType() 需要关闭吗?
【发布时间】:2015-01-18 08:13:56
【问题描述】:

假设我有一个 com.liferay.portal.kernel.repository.model.FileEntry 实例 fileEntry 我想复制。

我可以使用

com.liferay.portlet.documentlibrary.service.DLAppServiceUtil.addFileEntry(...,java.io.InputStream is,...)

在这种情况下,我使用 fileEntry.getContentStream() 从我的 FileEntry 获得 InputStream。

 FileEntry fileEntry;
 InputStream inputStream = fileEntry.getContentStream();

 FileEntry fileEntry2 = DLAppServiceUtil.addFileEntry(repositoryId, folder.getFolderId(), fileName, mimeType, fileName, "file was created in " + new Date(), fileName + " updated", inputStream, size, serviceContext);

问题:我需要在那个 InputStream 上执行 close 吗?

StreamUtil.cleanUp(inputStream);

在哪里StreamUtil.cleanUp:

public static void cleanUp(InputStream inputStream) {
    try {
        if (inputStream != null) {
            inputStream.close();
        }
    }
    catch (Exception e) {
        if (_log.isWarnEnabled()) {
            _log.warn(e, e);
        }
    }
}

【问题讨论】:

    标签: java io liferay inputstream liferay-6


    【解决方案1】:

    你应该但你不必这样做。

    旧版本的 Java 要求您关闭 InputStream。但是在 Liferay 支持的所有 JAVA 版本中,一旦没有更多引用,流就会自动关闭。但是,您受垃圾收集器及其时间表的支配。

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 2019-08-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 2010-10-19
      • 2011-11-23
      • 2021-02-24
      • 2018-07-24
      相关资源
      最近更新 更多