Как проверить, был ли файл отредактирован / изменен пользователем?

У меня проблема с дротиком / флаттером, я хочу проверить, открывает ли пользователь файл и изменяет / редактирует файл, и только если это происходит, я делаю что-то неважное ... для этой цели я использовал этот кусок кода:

String dir = await bloc.buildFileDirectory(filePath);

File file = new File('$dir/filename');

DateTime date = await file.lastModified();

if(date.millisecondsSinceEpoch < someOtherFileTimeStamp)  
  do something

с помощью метода lastModified () из класса File в Dart, когда пользователь откроет файл, он будет рассматривать изменение, и поэтому он будет вызвать условие if ... есть ли какой-либо функциональный способ проверить наличие действительно изменений в файле? например, отредактировать какой-то текст внутри файла или изменить имя ... что-то в этом роде

Тай для твоего времени


person Cláudio Almeida    schedule 09.09.2018    source источник


Ответы (1)


Да, вы можете использовать FileWatcher библиотеки watcher.

Вот пример того, как его использовать:

final watcher = FileWatcher('main.dart');
final subscription = watcher.events.listen((event) {
  switch (event.type) {
    case ChangeType.ADD:
      print('Added file');
      break;
    case ChangeType.MODIFY:
      print('Modified');
      break;
    case ChangeType.REMOVE:
      print('Removed');
  }
});

Если вам нужно определить, изменился ли файл с момента последнего запуска вашей программы, то это, конечно, не сработает, и вам придется использовать временную метку, как вы это делаете, или даже хешировать содержимое файла и хранить его где-нибудь, так что вы можете позже проверить, остался ли хэш прежним.

person Renato    schedule 08.09.2019