gpt4 book ai didi

java - 尽管有 mkdirs() 和 createNewFile(),FileOutputStream 上的 FileNotFoundException

转载 作者:行者123 更新时间:2023-11-29 07:09:41 25 4
gpt4 key购买 nike

我有一个从 SMTP 服务器下载电子邮件的 bean。阅读电子邮件后,它会将附件保存在服务器上。要阅读附件,我使用此代码:

File f = new File("\\attachments\\" + attachment.getFileName());
f.mkdirs();
f.createNewFile();
FileOutputStream fos = new FileOutputStream(f);
fos.write(bytes);
fos.close();

我在创建 FileOutputStream 时遇到 FileNotFoundException,我不明白为什么。如果有帮助,我将 NetBeans 与 GlassFish 结合使用,并在本地计算机上进行调试测试。

最佳答案

当你做的时候

f.mkdirs();

您正在创建一个与您的文件同名的目录(也就是说,您不仅创建目录“附件”,还创建一个与附件文件名同名的子目录)。然后

f.createNewFile();

不执行任何操作,因为该文件已经存在(以您刚创建的目录的形式)。它返回 false 告诉您该文件已经存在。

然后这失败了:

FileOutputStream fos = new FileOutputStream(f);

您正在尝试打开目录上的输出流。系统不允许您在目录中写入,因此失败。

底线是:

  • mkdirs() 并不像您想象的那样。
  • 您应该检查调用 createNewFile() 的返回值。

使其工作的最简单方法是将您的行替换为:

f.getParentFile().mkdirs();

关于java - 尽管有 mkdirs() 和 createNewFile(),FileOutputStream 上的 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15204271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com