我打算製作一個程序,該程序可以在計算機上的文件夾和我的NAS之間使用。 它會列出兩個文件夾中的所有文件,然後確定哪個文件較新,然後將其上傳到其他設備。 我知道如何通過FTP上傳文件,但我一開始就卡住了,因爲我不知道如何列出我的文件。我對使用FindFirstFile()
和FindNextFile()
以及WIN32_FIND_DATA
進行了一些研究。這樣,我可以得到最後的寫入數據,但是這不會讓我列出子目錄。 你知道任何簡單的方法列出文件夾及其子目錄中的所有文件,並將每個文件的信息保存在列表中嗎?包含所有文件信息的C++文件列表
1
A
回答
2
FindFirstFile()
和FindNextFile()
不會讓你列出子目錄。其中WIN32_FIND_DATA
的成員之一爲dwFileAttributes
,其中包括目錄條目的FILE_ATTRIBUTE_DIRECTORY
。只需在該子目錄中啓動另一個FindFirstFile()
,清洗並重復。
MSDN上有一個示例顯示如何使用FindFirstFile
API,here。
3
簡單的方法是使用boost::recursive_directory_iterator
。
#include <boost/foreach.hpp>
#include <iostream>
#include <vector>
#include <boost/filesystem.hpp>
#include <boost/date_time.hpp>
#include <algorithm>
#include <iterator>
#include <ctime>
using boost::filesystem::path;
using boost::filesystem::recursive_directory_iterator;
using boost::filesystem::directory_entry;
using boost::filesystem::filesystem_error;
using boost::filesystem::last_write_time;
using std::vector;
using std::cout;
using std::copy;
using std::ostream_iterator;
using std::time_t;
using boost::posix_time::from_time_t;
int main(int ac, const char **av)
{
vector<const char*> args(av+1, av+ac);
if(args.empty())
args.push_back(".");
vector<directory_entry> files;
BOOST_FOREACH(path p, args)
{
boost::system::error_code ec;
copy(recursive_directory_iterator(p, ec),
recursive_directory_iterator(),
back_inserter(files));
}
BOOST_FOREACH(const directory_entry& d, files)
{
if(exists(d.path()))
{
cout << from_time_t(last_write_time(d.path())) << " " << d.path() << "\n";
}
}
}
相關問題
- 1. C - 列出文件夾和所有子文件夾中包含的文件
- 2. 包含速度信息的GPX文件
- 3. 如何列出包含頭文件中的所有文件
- 4. C# - 獲取不包含隱藏文件的文件列表
- 5. C#文件信息
- 6. 獲取項目中每個文件包含的所有頭文件的列表
- 7. 包含文件C
- 8. pdb文件包含多少信息? (C#/ .NET)
- 9. 刪除所有文件附加信息?
- 10. 如何包含所有boost頭文件?
- 11. 不包含模式的列表文件
- 12. 如何「觸摸」包含特定頭文件的所有文件?
- 13. 如何包含文件夾中的所有.js文件?
- 14. 包含jsp文件夾下的所有js文件
- 15. mget下載文件名中包含'Q 787'的所有文件
- 16. PDB文件不包括所有.net源信息
- 17. 文件輸入不提供所有文件信息
- 18. 如何列出關於所有Alfresco文件(Postgres SQL)的信息?
- 19. C++包含頭文件
- 20. C++頭文件包含
- 21. C++ Builder:包含JAR文件
- 22. xcode c包含文件
- 23. 在C++中包含文件
- 24. 有關SQL Server中所有數據庫文件的列表信息
- 25. 選擇包含另一列中的值的所有信息
- 26. ANT文件集包含在所有文件系統中
- 27. 在文件夾中包含所有scss文件
- 28. 包含C++空格的文本文件!
- 29. 列出所有不包含特定文件的提交
- 30. Pentaho運行包含列表文件
我已將'winapi'標記添加到此帖子中,因爲它看起來像是在專門用於Windows。 –
你知道rsync嗎?除非你喜歡發明輪子,否則不需要重新發明輪子;) – Thomas
爲什麼你要自己編寫另一個這樣的備份工具?使用rsync,或者使用其中的一種N + infinity商業工具來完成這件事。 –