2

我想更改文件的修改日期和时间。

我如何在 Dart 平台上做到这一点?

.NET Framework 中的示例,C# 语言。

File.SetLastWriteTime(path, DateTime.Now);

我确信这是可能的。

我只是不知道如何在 Dart 这样出色的平台上以标准方式进行操作。

在 Dart 中是不可能的

4

2 回答 2

2

The first method that comes to mind would be to just call touch using Process.

eg.

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);
   });
}

The equivalent code for people who are chained to windows would be

Future touchFile(File f) {
  return Process.run("copy", ["\b", f.path, "+,,"]);
}

See this question

于 2014-04-24T14:52:26.247 回答
1

调用系统进程似乎是一个严重的黑客攻击。这里有两个只使用 Dart API 的函数,并且不依赖于平台。一个是同步的,另一个是异步的。使用适合您需要的任何版本。

void touchFileSync(File file) {
  final touchfile = file.openSync(mode: FileMode.append);
  touchfile.flushSync();
  touchfile.closeSync();
}

Future<void> touchFile(File file) async {
  final touchfile = await file.open(mode: FileMode.append);
  await touchfile.flush();
  await touchfile.close();
}

这将更新上次修改时间。

于 2021-07-02T02:31:18.560 回答