Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 创建&;编写一个具有';执行';许可?_Dart - Fatal编程技术网

Dart 创建&;编写一个具有';执行';许可?

Dart 创建&;编写一个具有';执行';许可?,dart,Dart,我正在用dart编写一个bash脚本 下面的代码创建一个文件。但该文件没有“执行”权限。 因此,我无法通过执行/ex.sh来执行 new File('ex.sh').writeAsStringSync(script_str); 也许,我需要设置为文件。但是我找不到任何API。没有尝试过,但是如果您尝试: new File('ex.sh').writeAsString(script_str).then((final File file) { return file.stat().then

我正在用dart编写一个
bash
脚本

下面的代码创建一个文件。但该文件没有“执行”权限。 因此,我无法通过执行
/ex.sh
来执行

new File('ex.sh').writeAsStringSync(script_str);

也许,我需要设置为文件。但是我找不到任何API。

没有尝试过,但是如果您尝试:

new File('ex.sh').writeAsString(script_str).then((final File file) {
    return file.stat().then((final FileStat stat) => stat.mode = 777);
});

这个功能似乎还没有实现。 参见code.google.com/p/dart/issues/detail?id=15078

作为解决方法,只需创建一个实用函数来运行
chmod
命令

void _runBashCommandSync(GrinderContext context, String command, {String cwd, bool log: true}) {
  context.log(command);
  ProcessResult result =
    Process.runSync('/bin/bash', ['-c', command], workingDirectory: cwd);
  if (!log) return;
  if (result.stdout.isNotEmpty) {
    context.log(result.stdout);
  }
  if (result.stderr.isNotEmpty) {
    context.log(result.stderr);
  }
  if (result.exitCode > 0) {
    context.fail("exit code ${result.exitCode}");
  }
}
_runBashCommandSync(context, 'chmod 777 ex.sh');

谢谢你的回答。但不幸的是,
模式
是最后一个变量。似乎没有实现来设置
FileStat
:(@SunggukLim您可以创建本机扩展作为解决方案,同时您可以通过运行chmod@GregLowe是的。目前此函数尚未实现。我将尝试Process.run()。谢谢!