文件未找到(文件过大)

7

我在尝试下载文件时遇到了这个异常。

Caused by: java.io.FileNotFoundException: /repository/PWWVFSYWDW0STLHYVEEKHMYBXZTTETGROCQ4FGdsadadaXR1407709207964905350810526.jpg (File too large)
at java.io.FileOutputStream.open(Native Method)

显然文件已经存在。除此之外,同样的程序在我的电脑上可以正常工作,但是在Unix服务器上出现了问题。

有什么想法是什么原因导致这个问题?


文件真的存在吗?你确定吗?文件太大是什么意思? - Keerthivasan
1
你提到的文件名 PWWVFSYW......jpg 我认为有问题,因为在 Windows 中有时会出现与此相关的错误。有时候文件路径也很长,这种情况下也可能会发生错误。所以请检查一下。 - hcl
1
文件已经存在是明显的事实。除此之外,同样的过程在我的本地电脑上正常工作,但是在Unix服务器上出现了问题。 - Poyraz
我在网站上看到一些旧的笔记,指出某些版本的Unix存在与超过2GB的文件相关的错误。下载的文件有多大? - arcy
当我尝试执行 FileReader fr = new FileReader(""); 时,会出现这种情况。自己注意:下次提供文件名。 - demongolem
显示剩余3条评论
6个回答

1
我认为这是一个晦涩的错误,实际上来自于操作系统级别或JVM的本地代码实现。消息"File too large"是使用 C库方法呈现错误号时会得到的错误消息。
通常情况下,这不应该发生。根据UNIX / Linux手册条目,各种库调用不应失败,出现。
但是,我看到了一些错误报告,暗示fopen(等等)可能会在某些文件系统上失败,或者当C / C ++程序已禁用64位文件大小支持时。

那么这意味着什么?

不太清楚,但我怀疑它意味着你可能在使用:

  • 不稳定的Java实现,

  • 运行不稳定的UNIX/Linux版本,或者

  • 你正在尝试使用一种服务器操作系统不支持的文件系统(可能是FUSE文件系统)。

可能与此相关的Java错误:


1
所以,问题已解决。问题是由于磁盘已满,导致流花费了很长时间,我清理了磁盘后,问题就消失了。

1

当我试图将文件写入已经达到最大文件数的RedHat服务器上的目录时,收到了此消息。我将我的文件细分为子目录,错误没有再次出现。


0

POSIX(因此Unix)系统允许对路径(从File.getPath()获取的内容或路径的组件(其中最后一个可以使用File.getName()获取))设置最大长度。您可能会因为文件名过长而遇到此问题。

在这种情况下,open操作系统调用将失败,并显示ENAMETOOLONG错误代码

然而,“文件太大”消息通常与EFBIG错误代码相关联。这更可能是由于write系统调用导致的:

尝试写入超过实现依赖的最大文件大小或进程文件大小限制的文件。

可能是文件正在以追加方式打开,而隐含的lseek到文件末尾导致了EFBIG错误。


0

无论JVM错误输出(可能会误导或略有偏差),您可能需要检查您的Unix进程是否具有足够的打开文件句柄。耗尽进程文件句柄可能会导致各种与FS相关的错误代码。


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.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接