Poco库使用:文件目录操作


在工程项目开发中,文件目录操作应该是最常见的操作之一了吧。这里就介绍一下如何通过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");
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值