【发布时间】:2015-08-19 10:09:09
【问题描述】:
我有一个 Web 应用程序,我有几个操作。其中一个动作是脱离上下文将一些图像写入文件夹,让我们说:
/home/user/images/subfolder1/image.jpg
现在,另一个操作将该图像复制到位于图像内的另一个文件夹,但具有不同的扩展名,让我们说:
/home/user/images/subfolder2/subsubfolder2-1/image.png
现在,第一张图片是从表单中获取的,第二张图片是从保存第一张图片的路径中获取的,两张图片都是用相同的方法写入的:
InputStream in = new FileInputStream(origen);
OutputStream out = new FileOutputStream(destination.getAbsolutePath());
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
webapp 使用 mkdirs() 创建每个文件夹,包括“subfolder2/subsubfolder2-1/”(如果它们不存在)。
这在我运行 ubuntu 14.04 和 apache tomcat 6.0.43 的测试环境中工作得很好,但是,在生产中,是 centos 6(或 6.5),相同的 apache tomcat 版本,图像被创建,但没有数据被写入我的意思是,它创建了一个 image.png 文件,但它的大小为 0。所有文件夹都具有正确的权限,drwxrwxrwx,但由于某种原因, image.png 缺少它们,只有 rw。
这是什么原因造成的?
【问题讨论】:
-
尝试将日志级别转为跟踪,如果您发现任何可疑情况。从您分享的信息来看,这似乎是一些本地环境设置问题 - 有点难以回答
-
我在日志中唯一得到的是当我尝试读取文件时,我得到那个文件或目录不存在,我猜 isFile 验证大小,因为它是 0,所以它返回它不存在。但我会尝试更改日志级别。
-
您确定正确关闭了输出流吗?
-
是的,我正在正确关闭,但我已经修复了它。很奇怪。将添加答案。