Можно ли обнаружить, был ли закрыт файл (например, файл pdf, открытый в превью)?Как определить, был ли файл закрыт?
FSEvents API
не запускает такое событие.
Возможно, я мог наблюдать связанный процесс или что-то в этом роде ?!
Можно ли обнаружить, был ли закрыт файл (например, файл pdf, открытый в превью)?Как определить, был ли файл закрыт?
FSEvents API
не запускает такое событие.
Возможно, я мог наблюдать связанный процесс или что-то в этом роде ?!
Да, вы можете узнать, был ли файл закрыт или нет. Итак, ниже я попытался с помощью команды unix lsof -t yourFilePath определить ее и, следовательно, реализовать ее в какао. Ниже приведено ниже lsof -t yourFilePath предоставит вам идентификатор процесса только открытых файлов. Чтобы вы могли легко определить, какие файлы закрыты: -
NSTask *task;
task = [[NSTask alloc] init];
[task setLaunchPath: @"/bin/bash"];
NSString *[email protected]"/Users/Home/Desktop/test.doc";
[task setArguments:[NSArray arrayWithObjects: @"-c",[NSString stringWithFormat:@"%@ %@ %@",@"lsof",@"-t",yourFilePath],nil]];
NSPipe *pipe;
pipe = [NSPipe pipe];
[task setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[task launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *response = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
if ([response length] > 0)
{
NSLog(@"test.doc file has been opened and process id is %@",response);
}
else
{
NSLog(@"test.doc file has been closed");
}
Это поможет вам определить открытый файл, а также –
Зачем вам запускать bash для этого ?! Сшивание вместе «скрипта», состоящего из трех строк, соединенных пробелами, - «запрос * для», не работает с путями, содержащими пробелы или другие «специальные символы». Здесь нет необходимости в сценарии оболочки - вы можете определить lsof напрямую по своему собственному пути и передать два аргумента непосредственно в массиве. –
@Peter Hosey, я согласен с вашей точкой в том, почему я упомянул путь без каких-либо специальных символов. Но я хотел сказать, что какао предоставляет какой-либо api, чтобы определить, открыт или закрыт какой-либо файл? –
Файл или документ? Если последнее, зачем вам нужно знать, что документ был закрыт? Там может быть лучший способ сделать то, что вы действительно хотите. –