2012-10-27 71 views
1

我需要将文件上传到我的服务器。我使用ASIHTTPRequest来完成这项工作。但是,如果我只是将上传作业添加到ASINetworkQueue并立即删除源文件,则上传作业仍可以成功完成。为什么文件删除时文件传输失败?

我以为作业会因为我删除文件而失败。即使文件被删除,有人可以解释它仍然成功的原因吗?

+1

在Unix系统上,一个文件可以在它仍然打开的时候被删除,并且对于已经打开的文件,它仍然是可读的。在所有进程关闭文件之前,数据不会被清除/取消分配。 – user57368

+1

@ user57368,请发表您的评论作为答案。 –

回答

0

这与在进程仍在写入时删除大型日志文件时发现的问题相同,希望恢复一些磁盘空间。

UNIX系统倾向于将文件的目录条目与文件的实际数据分开。

这是数据消耗的空间,这就是为什么你可以在UNIX中有硬链接,许多目录条目指向相同的文件内容。

文件的实际数据直到最后一个进程关闭时才被删除,这几乎可以肯定是什么导致文件传输继续进行。

删除文件仅删除目录条目。数据仍然是因为文件传输程序已打开。

一旦它关闭,数据也将被删除。