2014-05-04 50 views
2

我正在编写一个应用程序在目标c中,应用程序的功能之一是它监视新文件的本地文件夹。本地文件夹为其他用户所共享,所以任何人都可以在那里放置(通常大约5GB的文件)。我正在寻找一种方式来与放在共享文件夹中的新文件进行交互。这些文件必须在应用程序试图访问它们之前完成复制。检查文件是否已经完成复制目标C

我试图监视新文件的大小,问题是这些文件也通过无线方式复制,所以在hickup的情况下大小保持不变,应用程序已经开始与文件进行交互。

在共享上放置文件的客户端不运行任何复制应用程序,只是finder或windows资源管理器。所以没有办法处理锁文件或类似的东西。

Dropbox如何做到这一点?

+0

你如何监视新文件的目录? – mttrb

+0

解决这个问题的通常方法是在完成写入后重命名文件。我相信有一些UNIX功能可以实现这一功能,但我不知道它们是否可以映射到Objective-C中。 –

+0

看看这个答案,它可能会帮助你。 BoilingLime

回答

0

显然,你可以使用shell命令:

lsof -Fc path/to/thefile 

,并且会告诉你哪个进程打开文件。看到这个线程的更多信息:Detect file in use by other process

+0

谢谢埃利亚斯,这似乎工作!此刻我运行第二个线程来不断检查目录中是否有新文件。之后,将其添加到数组中,并为数组中的每个文件提供lsof的输出。 仍在寻找更有效的方法来做到这一点。 –

+0

它看起来像lsof需要作为sudo运行。我认为没有用户交互的方式来运行应用程序(以允许任务以sudo的方式运行)。 –

相关问题