我在尝试下载文件时遇到此异常
Caused by: java.io.FileNotFoundException: /repository/PWWVFSYWDW0STLHYVEEKHMYBXZTTETGROCQ4FGdsadadaXR1407709207964905350810526.jpg (File too large)
at java.io.FileOutputStream.open(Native Method)
很明显,文件存在。除此之外,同样的程序在我的电脑上正常工作,但服务器存在问题,即Unix
任何可能导致此问题的想法?
答案 0 :(得分:1)
我认为这是一个模糊的错误,实际上来自操作系统级别或JVM的本机代码实现。如果使用perror
C库方法呈现EFBIG
错误号,则“文件太大”消息是您将收到的错误消息。
现在通常,这不应该发生。根据UNIX / Linux手册条目,各种open
库调用不应该因EFBIG而失败。
但是,我看到各种错误报告暗示fopen
(等等)在某些文件系统上可能会失败,和/或在禁用64位文件大小支持的情况下构建C / C ++程序时
那是什么意思?
目前尚不清楚,但我怀疑这意味着你要么:
使用Java的片状实现,
运行一个简单的UNIX / Linux版本,或
您正在尝试使用服务器操作系统不支持的某种类型的文件系统。 (它可能在FUSE文件系统上吗?)
可能相关的Java错误:
答案 1 :(得分:1)
所以,它解决了。问题是,磁盘已满,结果流需要很长时间, 在没有问题之后我清理磁盘,
答案 2 :(得分:0)
允许POSIX(以及Unix)系统在路径上施加最大长度(从File.getPath()
或路径的组件获取的最大长度(最后一个是你可以得到File.getName()
)。由于文件的长名称,您可能会看到此问题。
在这种情况下,文件open
操作系统调用将失败并显示ENAMETOOLONG
error code。
但是,“文件太大”消息通常与EFBIG
错误代码相关联。这更有可能来自write
系统调用:
尝试编写的文件超出了与实现相关的最大文件大小或进程的文件大小限制。
可能正在打开文件以进行追加,文件末尾隐含的lseek
会出现EFBIG
错误。
答案 3 :(得分:0)
无论JVM错误输出(可能会产生误导或轻微关闭),您可能需要检查您的Unix 进程是否有足够的打开文件句柄。耗尽流程文件句柄可能会导致各种与FS相关的错误代码。
答案 4 :(得分:0)
我尝试将文件写入RedHat服务器上已有最大文件数的目录时收到此消息。我将我的文件细分为子目录,但错误没有重新出现。
答案 5 :(得分:0)
problem:
java.io.FileNotFoundException: /sent/plain/2009/04/Sterling_AS2_to_edt_AS2_Sterling_SJMVM00 A.20090429115945.All_to_cil_QM_214.GS13173.cgs_to_cil.PR120301900.node (File too large)
文件名不长的文件已成功写到同一目录。
solution:
Reduce the assign filename length or remove older archived files with the longer filenames from that directory and try again.