我不熟悉C ++,因为我是C#开发人员。
在我的项目中,我需要删除一周前的所有文件夹。在C ++中,如何根据当前系统日期时间获取一周之前的文件夹列表?
我正在研究在Ubuntu 10.10上运行的Eclipse IDE。
如果您可以提供一些代码示例,那就太棒了。
提前致谢,非常感谢您的帮助!
答案 0 :(得分:5)
这是一个关于OS API的问题,而不是C ++。 C ++本身不提供文件系统操作的功能。但是,有几个可移植库,例如boost::filesystem。
但是,如果您只关注一个操作系统,则更容易使用它的设施 - * nix上的POSIX或Windows上的WinAPI。
两者都是基于C的,要获得C ++解决方案,您需要第三方库。
在Linux上,以下内容可能会帮助您入门:
答案 1 :(得分:5)
有了提升:
#include <boost/foreach.hpp>
#include <boost/filesystem.hpp>
int main(int, char**)
{
time_t one_week_ago = std::time(NULL) - (7 * 24 * 3600);
boost::filesystem::directory_iterator dir("/tmp"), end;
BOOST_FOREACH(const boost::filesystem::path& p, std::make_pair(dir, end))
if(boost::filesystem::is_directory(p))
if(boost::filesystem::last_write_time(p) < one_week_ago)
boost::filesystem::remove_all(p);
}
或不使用boost :: foreach
#include <boost/filesystem.hpp>
int main(int, char**)
{
time_t one_week_ago = std::time(NULL) - (7 * 24 * 3600);
boost::filesystem::directory_iterator dir("/tmp"), it, end;
for(it = dir; it != end; it++)
{
const boost::filesystem::path& p = *it;
if(boost::filesystem::is_directory(p))
if(boost::filesystem::last_write_time(p) < one_week_ago)
boost::filesystem::remove_all(p);
}
}
答案 2 :(得分:0)
我原以为你应该看看函数opendir和readdir - 也看看stat。 基本上,打开顶级目录,并检查其中的所有目录条目。 stat函数将能够为您提供访问和修改时间。