本文整理汇总了C++中FilePath::ensureDirectory方法的典型用法代码示例。如果您正苦于以下问题:C++ FilePath::ensureDirectory方法的具体用法?C++ FilePath::ensureDirectory怎么用?C++ FilePath::ensureDirectory使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FilePath
的用法示例。
在下文中一共展示了FilePath::ensureDirectory方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: copySourceFile
bool copySourceFile(const FilePath& sourceDir,
const FilePath& destDir,
int level,
const FilePath& sourceFilePath)
{
// compute the target path
std::string relativePath = sourceFilePath.relativePath(sourceDir);
FilePath targetPath = destDir.complete(relativePath);
// if the copy item is a directory just create it
if (sourceFilePath.isDirectory())
{
Error error = targetPath.ensureDirectory();
if (error)
LOG_ERROR(error);
}
// otherwise copy it
else
{
Error error = sourceFilePath.copy(targetPath);
if (error)
LOG_ERROR(error);
}
return true;
}
示例2: ExecuteChunkOperation
ExecuteChunkOperation(const std::string& docId,
const std::string& chunkId,
const std::string& nbCtxId,
const ShellCommand& command,
const core::FilePath& scriptPath)
: terminationRequested_(false),
docId_(docId),
chunkId_(chunkId),
nbCtxId_(nbCtxId),
command_(command),
scriptPath_(scriptPath)
{
using namespace core;
Error error = Success();
// ensure regular directory
FilePath outputPath = chunkOutputPath(
docId_,
chunkId_,
ContextExact);
error = outputPath.removeIfExists();
if (error)
LOG_ERROR(error);
error = outputPath.ensureDirectory();
if (error)
LOG_ERROR(error);
// clean old chunk output
error = cleanChunkOutput(docId_, chunkId_, nbCtxId_, true);
if (error)
LOG_ERROR(error);
}
示例3: getProjectUserDataDir
FilePath getProjectUserDataDir(const ErrorLocation& location)
{
// get the project directory
FilePath projectDir = projects::projectContext().directory();
// presume that the project dir is the data dir then check
// for a .Ruserdata directory as an alternative
FilePath dataDir = projectDir;
FilePath ruserdataDir = projectDir.childPath(".Ruserdata");
if (ruserdataDir.exists())
{
// create user-specific subdirectory if necessary
FilePath userDir = ruserdataDir.childPath(core::system::username());
Error error = userDir.ensureDirectory();
if (!error)
{
dataDir = userDir;
}
else
{
core::log::logError(error, location);
}
}
// return the data dir
return dataDir;
}
示例4: copyFile
// IN: String sourcePath, String targetPath
Error copyFile(const ::core::json::JsonRpcRequest& request,
json::JsonRpcResponse* pResponse)
{
// read params
std::string sourcePath, targetPath;
bool overwrite;
Error error = json::readParams(request.params,
&sourcePath,
&targetPath,
&overwrite);
if (error)
return error;
FilePath targetFilePath = module_context::resolveAliasedPath(targetPath);
// make sure the target path doesn't exist
if (targetFilePath.exists())
{
if (overwrite)
{
Error error = targetFilePath.remove();
if (error)
{
LOG_ERROR(error);
return fileExistsError(ERROR_LOCATION);
}
}
else
{
return fileExistsError(ERROR_LOCATION);
}
}
// compute the source file path
FilePath sourceFilePath = module_context::resolveAliasedPath(sourcePath);
// copy directories recursively
Error copyError ;
if (sourceFilePath.isDirectory())
{
// create the target directory
Error error = targetFilePath.ensureDirectory();
if (error)
return error ;
// iterate over the source
copyError = sourceFilePath.childrenRecursive(
boost::bind(copySourceFile, sourceFilePath, targetFilePath, _1, _2));
}
else
{
copyError = sourceFilePath.copy(targetFilePath);
}
// check quota after copies
quotas::checkQuotaStatus();
// return error status
return copyError;
}
示例5: historySerializationPath
FilePath historySerializationPath()
{
FilePath historyPath = module_context::sessionScratchPath()
.childPath("viewer_history");
Error error = historyPath.ensureDirectory();
if (error)
LOG_ERROR(error);
return historyPath;
}
示例6:
FileLogWriter::FileLogWriter(const std::string& programIdentity,
int logLevel,
const FilePath& logDir)
: programIdentity_(programIdentity),
logLevel_(logLevel)
{
logDir.ensureDirectory();
logFile_ = logDir.childPath(programIdentity + ".log");
}
示例7: createSessionStatePath
FilePath RestartContext::createSessionStatePath(const FilePath& scopePath,
const std::string& contextId)
{
FilePath contextsPath = restartContextsPath(scopePath);
FilePath statePath = contextsPath.complete(kContext + contextId);
Error error = statePath.ensureDirectory();
if (error)
LOG_ERROR(error);
return statePath;
}
示例8: initializeStreamDir
inline Error initializeStreamDir(const FilePath& streamDir)
{
Error error = streamDir.ensureDirectory();
if (error)
return error;
error = changeFileMode(streamDir.parent(),
system::EveryoneReadWriteExecuteMode);
if (error)
return error;
return changeFileMode(streamDir,
system::EveryoneReadWriteExecuteMode);
}
示例9: userSettingsPath
FilePath userSettingsPath(const FilePath& userHomeDirectory,
const std::string& appName)
{
std::string lower = appName;
boost::to_lower(lower);
FilePath path = userHomeDirectory.childPath("." + lower);
Error error = path.ensureDirectory();
if (error)
{
LOG_ERROR(error);
}
return path;
}
示例10:
FileLogWriter::FileLogWriter(const std::string& programIdentity,
int logLevel,
const FilePath& logDir)
: programIdentity_(programIdentity),
logLevel_(logLevel)
{
logDir.ensureDirectory();
logFile_ = logDir.childPath(programIdentity + ".log");
if (!logFile_.exists())
{
// swallow errors -- we can't log so it doesn't matter
core::appendToFile(logFile_, "");
}
}
示例11: viewInBrowserPath
FilePath viewInBrowserPath()
{
if (s_presentationState.viewInBrowserPath.empty())
{
FilePath viewDir = module_context::tempFile("view", "dir");
Error error = viewDir.ensureDirectory();
if (!error)
{
s_presentationState.viewInBrowserPath =
viewDir.childPath("presentation.html");
}
else
{
LOG_ERROR(error);
}
}
return s_presentationState.viewInBrowserPath;
}
示例12: initSaveContext
void initSaveContext(const FilePath& statePath,
Settings* pSettings,
bool* pSaved)
{
// ensure the context exists
Error error = statePath.ensureDirectory();
if (error)
{
reportError(kSaving, "creating directory", error, ERROR_LOCATION);
*pSaved = false;
}
// init session settings
error = pSettings->initialize(statePath.complete(kSettingsFile));
if (error)
{
reportError(kSaving, kSettingsFile, error, ERROR_LOCATION);
*pSaved = false;
}
}
示例13: createFolder
// IN: String path
core::Error createFolder(const core::json::JsonRpcRequest& request,
json::JsonRpcResponse* pResponse)
{
std::string path;
Error error = json::readParam(request.params, 0, &path);
if (error)
return error ;
// create the directory
FilePath folderPath = module_context::resolveAliasedPath(path) ;
if (folderPath.exists())
{
return fileExistsError(ERROR_LOCATION);
}
else
{
Error createError = folderPath.ensureDirectory() ;
if (createError)
return createError ;
}
return Success() ;
}
示例14: onDocSaved
void onDocSaved(FilePath &path)
{
Error error;
// ignore non-R Markdown saves
if (!path.hasExtensionLowerCase(".rmd"))
return;
// find cache folder (bail out if it doesn't exist)
FilePath cache = chunkCacheFolder(path, "", notebookCtxId());
if (!cache.exists())
return;
FilePath saved = chunkCacheFolder(path, "", kSavedCtx);
if (saved.exists())
{
// tidy up: remove any saved chunks that no longer exist
error = removeStaleSavedChunks(path, saved);
if (error)
LOG_ERROR(error);
}
else
{
// no saved context yet; ensure we have a place to put it
saved.ensureDirectory();
}
// move all the chunk definitions over to the saved context
std::vector<FilePath> children;
error = cache.children(&children);
if (error)
{
LOG_ERROR(error);
return;
}
BOOST_FOREACH(const FilePath source, children)
{
// compute the target path
FilePath target = saved.complete(source.filename());
if (source.filename() == kNotebookChunkDefFilename)
{
// the definitions should be copied (we always want them in both
// contexts)
error = target.removeIfExists();
if (!error)
error = source.copy(target);
}
else if (source.isDirectory())
{
// library folders should be merged and then removed, so we don't
// lose library contents
if (source.filename() == kChunkLibDir)
{
error = mergeLib(source, target);
if (!error)
error = source.remove();
}
else
{
// the chunk output folders should be moved; destroy the old copy
error = target.removeIfExists();
if (!error)
error = source.move(target);
}
}
else
{
// nothing besides the chunks.json and chunk folders should be here,
// so ignore other files/content
continue;
}
if (error)
LOG_ERROR(error);
}
示例15: createProject
Error createProject(const json::JsonRpcRequest& request,
json::JsonRpcResponse* pResponse)
{
// read params
std::string projectFile;
json::Value newPackageJson, newShinyAppJson;
Error error = json::readParams(request.params,
&projectFile,
&newPackageJson,
&newShinyAppJson);
if (error)
return error;
FilePath projectFilePath = module_context::resolveAliasedPath(projectFile);
// package project
if (!newPackageJson.is_null())
{
// build list of code files
bool usingRcpp;
json::Array codeFilesJson;
Error error = json::readObject(newPackageJson.get_obj(),
"using_rcpp", &usingRcpp,
"code_files", &codeFilesJson);
if (error)
return error;
std::vector<FilePath> codeFiles;
BOOST_FOREACH(const json::Value codeFile, codeFilesJson)
{
if (!json::isType<std::string>(codeFile))
{
BOOST_ASSERT(false);
continue;
}
FilePath codeFilePath =
module_context::resolveAliasedPath(codeFile.get_str());
codeFiles.push_back(codeFilePath);
}
// error if the package dir already exists
FilePath packageDir = projectFilePath.parent();
if (packageDir.exists())
return core::fileExistsError(ERROR_LOCATION);
// create a temp dir (so we can import the list of code files)
FilePath tempDir = module_context::tempFile("newpkg", "dir");
error = tempDir.ensureDirectory();
if (error)
return error;
// copy the code files into the tempDir and build up a
// list of the filenames for passing to package.skeleton
std::vector<std::string> rFileNames, cppFileNames;
BOOST_FOREACH(const FilePath& codeFilePath, codeFiles)
{
FilePath targetPath = tempDir.complete(codeFilePath.filename());
Error error = codeFilePath.copy(targetPath);
if (error)
return error;
std::string ext = targetPath.extensionLowerCase();
std::string file = string_utils::utf8ToSystem(targetPath.filename());
if (boost::algorithm::starts_with(ext,".c"))
cppFileNames.push_back(file);
else
rFileNames.push_back(file);
}