在工程项目开发中,文件目录操作应该是最常见的操作之一了吧。这里就介绍一下如何通过Poco库实现各种文件目录操作。
获取各种标准目录
//当前的工作路径
Poco::Path::current();
//当前用户的根目录
Poco::Path::home();
//用户的配置路径
//Linux下是~/.config/
//Windows下是%APPDATA%的值一般为C:\Users\user\AppData\Roaming
Poco::Path::configHome();
//用户数据目录
//Linux下为~/.local/share/
//Windows下为 '%LOCALAPPDATA%' 一般为C:\Users\user\AppData\Local
Poco::Path::dataHome();
//用户的临时目录
//Linux下为~/.local/temp/
//Windows下为C:\Users\huayu\AppData\Local\Temp
Poco::Path::tempHome();
//数据缓存目录
//Linux下为~/.cache/
//Windows下和tempHome()相同
Poco::Path::cacheHome();
//临时目录
Poco::Path::temp();
//配置目录
//Linux下为/etc/..
//Windows下为C:\ProgramData
Poco::Path::config();
获取和应用相关的信息
在基于Application的Poco应用类中我们可以通过特定的键值访问和应用相关的一些标准信息。访问方法如下:
//Application的配置中包含多种标准信息
//对应的信息的访问方法如下
Application().config().getString("");
//键值和对应的信息介绍如下所示:
//执行程序的绝对路径
application.path
//执行程序的名称
application.name
//不包含扩展名的程序名称
application.baseName
//执行程序所在的目录
application.dir
//用户存储配置文件的目录
application.configDir
//缓存目录
application.cacheDir
//数据目录
application.dataDir
//临时目录
application.tempDir:
目录操作
//创建目录
File temp_dir("testfiledir");
temp_dir.createDirectory();
//创建递归目录
temp_dir.createDirectories();
temp_dir.isDirectory();
//拷贝目录
temp_dir.copyTo("NewDir");
//递归删除目录
temp_dir.remove(true);
//目录重命名
temp_dir.renameTo("NewDirname");
文件操作
//获得文件的大小
File temp_file("testfile.dat");
temp_file.getSize();
//获取最后修改时间
temp_file.getLastModified();
//创建文件
temp_file.createFile();
//拷贝,移动,重命名文件
temp_file.copyTo("E:\\hello.uwl");
temp_file.moveTo("E:\\Hello.test");
temp_file.renameTo("file.txt");
//写文本文件,文件不存在则新建
//文件存在则重写文件
Poco::FileOutputStream fos("D:\\test.txt",std::ios::out);
fos << "hello world";
fos.close();
//以二进制的形式写文件
Poco::FileOutputStream binary_fos("D:\\test.txt", std::ios::binary);
binary_fos.close();
//读取文件内容
Poco::File file("D:\\test.txt");
std::ostringstream ostr;
if (file.exists())
{
Poco::FileInputStream fis("D:\\test.txt",std::ios::in);
Poco::StreamCopier::copyStream(fis, ostr);
std::string content = ostr.str();
fis.close();
}
//清空文件
Poco::FileStream str1("D:\\test.txt", std::ios::trunc);
str1.close();
//向文件中追加内容
Poco::FileStream app_file("test.txt", std::ios::app);
app_file << "apppend text";
app_file.close();
//读写文件内容
Poco::FileStream fos_read_write("D:\\test.txt");
fos_read_write << "hello world";
fos_read_write.seekg(0, std::ios::beg);
std::string read;
fos_read_write >> read;
fos_read_write.close();
//注册临时文件,临时文件使用完毕之后会被删掉
Poco::TemporaryFile::registerForDeletion("D:\\test.txt");