Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Это кажется мне, проблема передача файл, прежде чем это будет завершено, не, что Вы удаляете его.
, Если это - Linux, для файла возможно быть открытым процессом A и обработать B, может расцепить файл. Нет никакой ошибки, но конечно A тратит впустую свое время. Поэтому то, что rsync удаляет исходный файл, не является проблемой.
проблемой является rsync, удаляет исходный файл только после того, как это копируется, и если это будет все еще записано в диск, то у Вас будет частичный файл.
Как насчет этого: Смонтируйтесь mass
как удаленная файловая система (NFS работал бы) в speed
. Тогда просто веб-проверка файлы непосредственно.
Rsync может исключить файлы, соответствующие определенным скороговоркам. Даже если Вы не можете изменить его, чтобы заставить его загрузить файлы на временный каталог, возможно, это имеет соглашение именования файлов по-другому во время загрузки (например: foo.downloading
при загрузке для файла, названного foo
) и можно использовать это свойство для исключения файлов, которые все еще загружаются с того, чтобы быть скопированным.
Сколько контроля Вы имеете над процессом загрузки? Если Вы самокрутка, Вы можете иметь файл, загружаемый движение на временный каталог, или иметь временное имя, пока это не закончило загружать, и затем mv это к корректному имени, когда это сделано. Если Вы используете внешнее программное обеспечение, то Вы не имеете столько же контроля, но Вы все еще могли бы быть в состоянии сделать временную вещь каталога.
Если Вы управляете процессом проверки, или он имеет предсказуемый вывод, вышеупомянутые решения (хранящий в tempfile, пока не закончено, то mv'ing к месту завершенных загрузок, или игнорирующий файлы с '.downloading' вид имени) могли бы работать. Если все это находится вне Вашего контроля, можно удостовериться, что файл не открыт никаким процессом путем выполнения 'lsof $filename' и проверки, существует ли результат. Очевидно, если ни у кого нет открытого файла, безопасно переместить его.