我打算製作一個程序,該程序可以在計算機上的文件夾和我的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. TestNG.xml套件包含所有文件包所有文件
- 3. C - 列出文件夾和所有子文件夾中包含的文件
- 4. 包含速度信息的GPX文件
- 5. 將信息傳遞迴包含文件
- 6. 如何列出包含頭文件中的所有文件
- 7. C# - 獲取不包含隱藏文件的文件列表
- 8. C#文件信息
- 9. 獲取項目中每個文件包含的所有頭文件的列表
- 10. 在文件夾中列出目錄中所有文件的文件信息
- 11. 包含文件C
- 12. pdb文件包含多少信息? (C#/ .NET)
- 13. 刪除所有文件附加信息?
- 14. 試圖創建一個包含信息的文本文件。
- 15. LIsting文件夾中的所有文本文件並將信息寫入excel表
- 16. 如何包含所有boost頭文件?
- 17. 如何包含所有lib文件夾?
- 18. 不包含模式的列表文件
- 19. 包含jsp文件夾下的所有js文件
- 20. 包含MSI文件夾中的所有文件
- 21. 如何包含文件夾中的所有.js文件?
- 22. 如何「觸摸」包含特定頭文件的所有文件?
- 23. 包含所有其他頭文件的單頭文件?
- 24. mget下載文件名中包含'Q 787'的所有文件
- 25. C#Windows文件夾信息
- 26. 圖片C#文件信息
- 27. PHP列表只包含zip文件內的文件(不包括文件夾)
- 28. 獲取來自壓縮文件(C#)的所有信息
- 29. PDB文件不包括所有.net源信息
- 30. 將包信息寫入文本文件
我已將'winapi'標記添加到此帖子中,因爲它看起來像是在專門用於Windows。 –
你知道rsync嗎?除非你喜歡發明輪子,否則不需要重新發明輪子;) – Thomas
爲什麼你要自己編寫另一個這樣的備份工具?使用rsync,或者使用其中的一種N + infinity商業工具來完成這件事。 –