5#include "flutter/fml/file.h"
7#include "flutter/fml/logging.h"
8#include "flutter/fml/unique_fd.h"
13 const std::vector<std::string>& components,
18 const char* file_path = components[index].c_str();
20 auto directory =
OpenDirectory(base_directory, file_path,
true, permission);
22 if (!directory.is_valid()) {
26 if (index == components.size() - 1) {
34 const std::vector<std::string>& components,
40 if (components.empty()) {
58 FML_LOG(
ERROR) <<
"Could not clean directory: " << path_;
66 FML_LOG(
ERROR) <<
"Could not remove directory: " << path_;
73 FileVisitor recursive_visitor = [&recursive_visitor, &visitor](
75 const std::string& filename) {
76 if (!visitor(directory, filename)) {
82 FML_LOG(
ERROR) <<
"Can't open sub-directory: " << filename;
89 return VisitFiles(directory, recursive_visitor);
105 const std::string& filename) {
110 removed =
VisitFiles(sub_dir, recursive_cleanup) &&
117 return VisitFiles(directory, recursive_cleanup);
121 const char* directory_name) {
~ScopedTemporaryDirectory()
ScopedTemporaryDirectory()
void reset(const T &value=Traits::InvalidValue())
#define FML_LOG(severity)
#define FML_DCHECK(condition)
fml::UniqueFD OpenFileReadOnly(const fml::UniqueFD &base_directory, const char *path)
bool VisitFiles(const fml::UniqueFD &directory, const FileVisitor &visitor)
bool RemoveFilesInDirectory(const fml::UniqueFD &directory)
fml::UniqueFD OpenDirectoryReadOnly(const fml::UniqueFD &base_directory, const char *path)
fml::UniqueFD OpenDirectory(const char *path, bool create_if_necessary, FilePermission permission)
std::string CreateTemporaryDirectory()
bool UnlinkDirectory(const char *path)
bool UnlinkFile(const char *path)
fml::UniqueFD OpenFile(const char *path, bool create_if_necessary, FilePermission permission)
This can open a directory on POSIX, but not on Windows.
bool RemoveDirectoryRecursively(const fml::UniqueFD &parent, const char *directory_name)
bool VisitFilesRecursively(const fml::UniqueFD &directory, const FileVisitor &visitor)
std::function< bool(const fml::UniqueFD &directory, const std::string &filename)> FileVisitor
bool IsDirectory(const fml::UniqueFD &directory)