Directory 是否有一个内置的功能来复制Dart中的目录?

Directory 是否有一个内置的功能来复制Dart中的目录?,directory,copy,dart,Directory,Copy,Dart,是否有一个内置函数来复制目录并递归复制Dart中的所有文件(和其他目录)?不,据我所知,没有。但Dart支持从目录基本读取和写入文件,因此可以通过编程解决这一问题 我发现了一个可以完成这个过程的工具 基本上,您将在目录中搜索要复制的文件并执行复制操作: newFile.writeAsBytesSync(element.readAsBytesSync()); 对于所有文件路径,新路径(element.Path),位于新目录(newLocation)中 编辑: 但这是非常低效的,因为整个文件必须由

是否有一个内置函数来复制目录并递归复制Dart中的所有文件(和其他目录)?

不,据我所知,没有。但Dart支持从目录基本读取和写入文件,因此可以通过编程解决这一问题

我发现了一个可以完成这个过程的工具

基本上,您将在目录中搜索要复制的文件并执行复制操作:

newFile.writeAsBytesSync(element.readAsBytesSync());
对于所有文件路径,
新路径(element.Path),位于
新目录(newLocation)中

编辑:

但这是非常低效的,因为整个文件必须由系统读入并写回一个文件。您可以直接由Dart生成,为您处理此过程:

Process.run("cmd", ["/c", "copy", ...])

谢谢你,James,为它写了一个快速函数,但是用了另一种方法。我不确定这种方式是否更有效

/**
*检索目录中的所有文件
*/
未来所有目录文件(字符串目录)
{
列出框架文件路径=[];
//获取目录中的所有路径
返回新目录(Directory).list(递归:true,followLinks:false)
.listen((文件系统实体)
{
//对于每个路径,如果路径指向一个文件,则添加到数组列表
File File=新文件(entity.path);
file.exists()。然后((exists)
{
如果(存在)
{
frameworkfilepath.add(文件);
}
});
}).asFuture().then(({return frameworkfilepath;});
}
编辑:或者!更好的方法(在某些情况下)是返回目录中的文件流:

/**
*目录文件流
*
*以文件流的形式检索目录中的所有文件。
*/
Stream\u directoryFileStream(目录)
{
流量控制器;
订阅来源;
控制器=新的StreamController(
onListen:()
{
//获取目录中的所有路径
source=directory.list(recursive:true,followLinks:false)。listen((FileSystemEntity)
{
//对于每个路径,如果路径指向一个文件,则将该文件添加到流中
File File=新文件(entity.path);
file.exists()。然后((bool存在)
{
如果(存在)
添加(文件);
});
},
onError:()=>controller.addError,
onDone:()=>controller.close
);
},
onPause:(){if(source!=null)source.pause();},
onResume:(){if(source!=null)source.resume();},
onCancel:(){if(source!=null)source.cancel();}
);
返回控制器.stream;
}
找到了(或相同版本的同步版本),似乎对我有用。它是io软件包的一部分,可从以下站点获得

它相当于
cp-R