java FileNotFoundException(文件太大)
我在尝试下载文件时遇到此异常
Caused by: java.io.FileNotFoundException: /repository/PWWVFSYWDW0STLHYVEEKHMYBXZTTETGROCQ4FGdsadadaXR1407709207964905350810526.jpg (File too large)
at java.io.FileOutputStream.open(Native Method)
很明显,该文件存在。除此之外,同样的程序在我的电脑上正常工作,但是服务器有一个问题,那就是Unix
你知道这是什么原因吗
# 1 楼答案
我在尝试将文件写入RedHat服务器上的目录时收到此消息,该服务器中的文件数已达到最大值。我将文件细分为子目录,错误不再出现
# 2 楼答案
不管JVM错误输出是什么(这可能会产生误导或有点偏离),您可能需要检查Unix进程是否有足够的打开文件句柄。耗尽进程文件句柄可能会导致各种与FS相关的错误代码
# 3 楼答案
我认为这是一个模糊的错误,实际上来自操作系统级别或JVM的本机代码实现。如果使用
perror
C library方法呈现EFBIG
错误号,则会收到错误消息“File too large”现在通常情况下,这不应该发生。根据UNIX/Linux手册条目,EFBIG的各种
<>但是,我看到了各种错误报告,暗示^ {< CD4>}(ETCITEA)可能会在某些文件系统上失败,和/或当A/C/C++程序被构建为具有64位文件大小支持的禁用时。p>open
库调用不应失败那么这意味着什么呢
目前尚不清楚,但我怀疑这意味着你:
使用脆弱的Java实现,
运行一个古怪的UNIX/Linux版本,或
您试图使用服务器操作系统不支持的某种类型的文件系统。(可能是在FUSE文件系统上?)
一个可能相关的Java错误:
# 4 楼答案
所以,问题解决了。问题是,磁盘已满,因此流需要很长时间, 我清理了磁盘之后就没有问题了
# 5 楼答案
文件名不太长的文件将成功写入同一目录
# 6 楼答案
POSIX(以及Unix)系统可以在路径上施加最大长度(从
File.getPath()
或路径的组件(最后一个可以通过File.getName()
)获得)。您可能会看到这个问题,因为文件名很长在这种情况下,文件^{} 操作系统调用将以
ENAMETOOLONG
error code失败但是,“文件太大”消息通常与} 系统调用引起的:
EFBIG
错误代码关联。这更有可能是由^{也许文件正在被打开以进行追加,而文件末尾隐含的^{} 给出了
EFBIG
错误