本文整理汇总了C++中FileList::emplace_back方法的典型用法代码示例。如果您正苦于以下问题:C++ FileList::emplace_back方法的具体用法?C++ FileList::emplace_back怎么用?C++ FileList::emplace_back使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FileList
的用法示例。
在下文中一共展示了FileList::emplace_back方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Hdfs3Glob
void Hdfs3Glob(const std::string& _path, const GlobType& gtype,
FileList& filelist) {
std::string path = _path;
// crop off hdfs://
die_unless(common::StartsWith(path, "hdfs://"));
path = path.substr(7);
// split uri into host/path
std::vector<std::string> splitted = common::Split(path, '/', 2);
hdfsFS fs = Hdfs3FindConnection(splitted[0]);
std::string hosturi = "hdfs://" + splitted[0];
// prepend root /
splitted[1] = "/" + splitted[1];
// list directory
int num_entries = 0;
hdfsFileInfo* list = hdfsListDirectory(
fs, splitted[1].c_str(), &num_entries);
if (!list) return;
for (int i = 0; i < num_entries; ++i) {
FileInfo fi;
fi.path = list[i].mName;
// remove leading slashes
while (fi.path.size() >= 2 && fi.path[0] == '/' && fi.path[1] == '/')
fi.path.erase(fi.path.begin(), fi.path.begin() + 1);
// prepend host uri
fi.path = hosturi + fi.path;
if (list[i].mKind == kObjectKindFile) {
if (gtype == GlobType::All || gtype == GlobType::File) {
// strangely full file name globs return the file with a / at
// the end.
while (fi.path.back() == '/')
fi.path.resize(fi.path.size() - 1);
fi.type = Type::File;
fi.size = list[i].mSize;
filelist.emplace_back(fi);
}
}
else if (list[i].mKind == kObjectKindDirectory) {
if (gtype == GlobType::All || gtype == GlobType::Directory) {
fi.type = Type::Directory;
fi.size = list[i].mSize;
filelist.emplace_back(fi);
}
}
}
hdfsFreeFileInfo(list, num_entries);
}