Window:
Path: C:\Windows\system32\cmd.exe
Style: Windows
Kind: absolute, to file
Node Name: –
Device Name: C
Directory List: Windows, system32
File Name: cmd.exe
File Version:
Linux:
Path: /usr/local/include/Poco/Foundation.h
Style: Unix
Kind: absolute, to file
Node Name: –
Device Name: –
Directory List: usr, local, include, Poco
File Name:Foundation.h
File Version:
头文件:#include “Poco/Path.h”
Poco::Path并不关心它所包含的路径是否在文件系统中实际存在
#include "Poco/Path.h"
int main(int argc, char** argv)
{
Poco::Path p(true); // path will be absolute
p.setNode("VMS001");
p.setDevice("DSK001");
p.pushDirectory("POCO");
p.pushDirectory("INCLUDE");
p.pushDirectory("POCO");
p.setFileName("POCO.H");
std::string s(p.toString(Poco::Path::PATH_VMS));
// "VMS001::DSK001:[POCO.INCLUDE.POCO]POCO.H"
p.clear(); // start over with a clean state
p.pushDirectory("projects");
p.pushDirectory("poco");
s = p.toString(Poco::Path::PATH_WINDOWS); // "projects\poco\"
s = p.toString(Poco::Path::PATH_UNIX); // "projects/poco/"
s = p.toString(); // depends on your platform
return 0;
}
#include "Poco/Path.h"
using Poco::Path;
int main(int argc, char** argv)
{
Path p("c:\\projects\\poco\\build_vs80.cmd", Path::PATH_WINDOWS);
std::string device(p.getDevice()); // "c"
int n = p.depth(); // 2
std::string dir1(p.directory(0)); // "projects"
std::string dir2(p[1]); // "poco"
std::string fileName(p[2]); // "build_vs80.cmd"
fileName = p.getFileName();
std::string baseName(p.getBaseName()); // "build_vs80"
std::string extension(p.getExtension()); // "cmd"
p.setBaseName("build_vs71");
fileName = p.getFileName(); // "build_vs71.cmd"
return 0;
}
Poco::Path提供静态方法来获取系统特定的特殊目录或文件的路径:
头文件:#include “Poco/File.h”
void list(std::vectorstd::string& files) const
void list(std::vector& files) const
Poco::DirectoryIterator提供一个迭代器风格的接口,用于读取目录的内容。
头文件:#include “Poco/DirectoryIterator.h”
Poco::DirectoryIterator中维护一个Poco::File和一个绝对路径Poco::Path。
#include "Poco/DirectoryIterator.h"
#include
using Poco::DirectoryIterator;
using Poco::Path;
int main(int argc, char** argv)
{
std::string cwd(Path::current());
DirectoryIterator it(cwd);
DirectoryIterator end;
while (it != end)
{
std::cout << it.name();
if (it->isFile())
std::cout << it->getSize();
std::cout << std::endl;
Path p(it.path());
++it;
}
return 0;
}
Poco::Glob,在模式中:
bool match(const std::string& subject):如果subject中的路径与Glob的模式匹配,则返回true,否则返回false。
#include
using Poco::Glob;
int main(int argc, char** argv)
{
std::set<std::string> files;
Glob::glob("%WINDIR%\\system32\\*.exe", files);
// Glob::glob("/usr/include/*/*.h", files);
std::set<std::string>::iterator it = files.begin();
for (; it != files.end(); ++it)
{
std::cout << *it << std::endl;
}
return 0;
}
许多程序需要临时文件,其特征如下:
Poco::TemporaryFile派生自Poco::File。构造函数自动创建一个唯一的文件名,放在系统特定的临时文件目录中。文件本身没有被创建。如果文件已经创建,析构函数将删除该文件。或者,删除可以推迟到程序终止,或者不删除。