我有一个从SMTP服务器下载电子邮件的bean.阅读电子邮件后,它会在服务器上保存附件.要阅读附件,我使用以下代码:
File f = new File("\\attachments\\" + attachment.getFileName());
f.mkdirs();
f.createNewFile();
FileOutputStream fos = new FileOutputStream(f);
fos.write(bytes);
fos.close();
Run Code Online (Sandbox Code Playgroud)
我在FileOutputStream上创建了一个FileNotFoundException,我无法理解为什么.如果可以提供帮助,我将NetBeans与GlassFish一起使用,并在本地计算机上进行调试.
当你这样做
f.mkdirs();
Run Code Online (Sandbox Code Playgroud)
您正在创建一个包含文件名的目录(也就是说,您不仅创建了"附件"目录,还创建了一个带有附件文件名的子目录).然后
f.createNewFile();
Run Code Online (Sandbox Code Playgroud)
由于文件已经存在(以您刚刚创建的目录的形式),因此不执行任何操作.它返回false以告诉您该文件已存在.
然后这失败了:
FileOutputStream fos = new FileOutputStream(f);
Run Code Online (Sandbox Code Playgroud)
您正在尝试在目录上打开输出流.系统不允许您在目录中写入,因此失败.
底线是:
mkdirs() 不会做你认为它做的事情.createNewFile().使其工作的最简单方法是将您的行替换为:
f.getParentFile().mkdirs();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1180 次 |
| 最近记录: |