2014-09-25 98 views
2

我想直接在文件系统上管理一堆报告文件,以便于使用,特别是在更新或更新版本时更是如此。并避免这个不透明的文档库。如何直接从Liferay中的磁盘读取文件?

现在我想直接在liferay中读取其中一个文件,将它们传递给JasperReports(例如作为ByteStream)。我没有找到任何办法来做到这一点或任何方式来处理文件。

这是如何实现的? 还是我完全搞砸了我的想法?

+3

处理Liferay中的文件与处理任何其他Java应用程序中的文件没有区别。 – 2014-09-25 11:15:03

+0

Liferay是一个Portlet容器,与“任何其他Java应用程序”有很大不同。不要尝试直接使用java.io包。 – 2014-09-25 14:14:34

回答

0

您基本上可以利用Spring框架的强大功能,因为Liferay直接或多或少地使用了Spring。

您需要使用某种“资源适配器”才能打开文件,您可以通过多种方式进行操作。它很大程度上取决于你放置文件的位置以及它们如何到达那里(如果从外部提供或由Liferay portlet本身生成,或作为已部署的资源提供)。

我可以推荐搜索以下Spring类中使用:

org.springframework.core.io.FileSystemResource 

不过你应该考虑在数据库中存储这些文件,因为这毕竟是更安全(交易安全,保障,。 ..)。

+0

为什么使用Spring而不是直接使用file.io更好? – Benjamin 2014-09-26 09:03:50

+0

Spring方式使用了企业应用程序已知的“资源适配器”概念的等价物。因此,它在访问非事务输入/输出时支持事务处理等。如果您直接使用file.io,则无法保证文件句柄和文件读取/写入操作正确。考虑事务回滚,系统异常和其他对企业应用程序非常重要的事情。 Liferay确实在99%的实施中正确使用这些API。 – 2014-09-29 07:13:57

相关问题