Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 传输事件的FileObserver_Android_Filesystems_Fileobserver - Fatal编程技术网

Android 传输事件的FileObserver

Android 传输事件的FileObserver,android,filesystems,fileobserver,Android,Filesystems,Fileobserver,我有一个目录,用户可以将文件从其他设备传输到该目录。我有一个FileObserver在监视那个目录。但我不知道该看什么。我需要知道文件何时完成传输,以便将其移动到其他位置。那么我应该关注什么事件代码呢FileObserver.CREATE | FileObserver.MODIFY似乎不这样做 更新 根据一些日志记录,我进行了以下观察:对于传输到目录的每个新文件,我都会得到以下事件: FileObserver.MOVED_TO : DSC_0058.JPG FileObserver.OPEN :

我有一个目录,用户可以将文件从其他设备传输到该目录。我有一个FileObserver在监视那个目录。但我不知道该看什么。我需要知道文件何时完成传输,以便将其移动到其他位置。那么我应该关注什么事件代码呢
FileObserver.CREATE | FileObserver.MODIFY
似乎不这样做

更新

根据一些日志记录,我进行了以下观察:对于传输到目录的每个新文件,我都会得到以下事件:

FileObserver.MOVED_TO : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG
FileObserver.OPEN : DSC_0058.JPG
FileObserver.CLOSE_NOWRITE : DSC_0058.JPG

因此,每次移动后,我都会看到一系列先开后关的动作。我不确定先打开然后关闭的NOWRITE事件的重要性。

我会尝试,因为下载的过程必须是写入并最终关闭文件。也就是说,不能保证编写器不会在文件完成之前关闭文件(它可能会重新打开并附加更多内容)。因此,请务必对其进行满意的测试。

如前所述,下载程序可能会重新打开并向文件中添加更多数据,这正是您所看到的。如果这就是它的行为方式,那么您永远无法知道何时使用FileObserver 100%完成。实际上,我不认为它会增加更多内容,因为它在每次
打开后都使用
CLOSE\u NOWRITE
CLOSE\u NOWRITE
不意味着关闭而不向其写入任何内容吗?
CLOSE\u NOWRITE
意味着关闭某个打开的文件,该文件最初只打开供读取。它从未打算写入数据。我们仍然不知道是什么在做这件事(可能是你的代码!)。这不是我的代码,因为我确保在排除故障时,除了调用startWatching目录外,我不会与目录交互。如果
startWatching
本身有副作用,那么这不是我的特殊用法,而是系统本身。因此,当传输文件时,会再次看到该模式:因此,如果我选择一次传输4个文件,则会对每个文件按顺序重复该模式。