Как изменить атрибуты даты файла (хотя бы дату изменения) с помощью "dart:io"?
Я хочу изменить дату и время модификации файла.
Как я могу сделать это на платформе Dart?
Пример из.NET Framework, язык C#.
File.SetLastWriteTime(path, DateTime.Now);
Я уверен, что это возможно.
Я просто не знаю, как это сделать стандартным способом на такой замечательной платформе, как Dart.
Это невозможно в дартс
3 ответа
Первый метод, который приходит на ум, это просто вызвать touch
с помощью Process
,
например.
import 'dart:io';
Future touchFile(File f) {
return Process.run("touch", [f.path]);
}
void main() {
var f = new File('example');
print(f.statSync().changed);
touchFile(f).then((_) {
print(f.statSync().changed);
});
}
Эквивалентный код для людей, которые связаны с окнами будет
Future touchFile(File f) {
return Process.run("copy", ["\b", f.path, "+,,"]);
}
Смотрите этот вопрос
Обращение к системным процессам кажется серьезным взломом. Вот функция, которая использует только Dart API и не зависит от платформы.
void touchFile(File file) {
final touchfile = file.openSync(mode: FileMode.append);
touchfile.flushSync();
touchfile.closeSync();
}
Это обновит время последнего изменения.
Начиная с 9 февраля 2017 г. вы можете установить дату изменения файла следующим образом:
var myFile = await File('foo.bar').openWrite();
await myFile.setLastModified(DateTime.now());