我需要能夠打開一個文件,當我只知道文件名的一部分。我知道擴展名,但每次創建文件名都不相同,但第一部分每次都是一樣的。當您只知道部分文件名時,如何打開文件? C++
0
A
回答
4
您將(可能)需要編寫一些代碼來搜索符合已知模式的文件。如果您想在Windows上執行此操作,您可以使用FindFirstFile
,FindNextFile
和FindClose
。在類Unix系統上,opendir
,readdir
和closedir
。
或者,您可能需要考慮使用Boost FileSystem以更便攜的方式完成這項工作。
+0
+1用於Boost FileSystem。 – 2011-02-25 23:07:38
0
我認爲你必須得到一個目錄中的文件列表 - 這[link]將幫助你。之後,我認爲將很容易得到一個特定的文件名。
0
在類Unix系統上,您可以使用glob()
。
#include <glob.h>
#include <iostream>
#define PREFIX "foo"
#define EXTENSION "txt"
int main() {
glob_t globbuf;
glob(PREFIX "*." EXTENSION, 0, NULL, &globbuf);
for (std::size_t i = 0; i < globbuf.gl_pathc; ++i) {
std::cout << "found: " << globbuf.gl_pathv[i] << '\n';
// ...
}
return 0;
}
0
使用Boost.Filesystem獲得目錄中的所有文件,然後應用正則表達式(或TR1 Boost.Regex)來匹配您的文件名。
使用Boost.Filesystem的V2用遞歸迭代器Windows中的某些代碼:
#include <string>
#include <regex>
#include <boost/filesystem.hpp>
...
...
std::wstring parent_directory(L"C:\\test");
std::tr1::wregex rx(L".*");
boost::filesystem::wpath parent_path(parent_directory);
if (!boost::filesystem::exists(parent_path))
return false;
boost::filesystem::wrecursive_directory_iterator end_itr;
for (boost::filesystem::wrecursive_directory_iterator itr(parent_path);
itr != end_itr;
++itr)
{
if(is_regular_file(itr->status()))
{
if(std::tr1::regex_match(itr->path().file_string(),rx))
// Bingo, regex matched. Do something...
}
}
Directory iteration with Boost.Filesystem. // // Getting started with regular expressions using C++ TR1 extensionsBoost.Regex
相關問題
- 1. 當我只知道Matlab中的部分文件名時,如何打開一些xlsx文件?
- 2. 用R只打開部分已知的文件名打開Excel文件
- 3. 打開文件時不知道名稱
- 4. 如果我只知道文件名的一部分,我該如何打開一個文件?
- 5. 如何知道文件已打開? QT
- 6. 當我不知道文件名(C++)時如何使用「fread」?
- 7. 打開文件只知道它的名字
- 8. 調用shell - 只知道文件名的一部分
- 9. 只搜索文件名的一部分文件名已知
- 10. 當只有文件名稱已知時,如何獲取文件名的路徑?
- 11. 在打開文件之前知道文件當前是否已打開?
- 12. 在SFTP上獲取遠程文件,只知道文件名的一部分
- 13. 如何知道用ACTION_VIEW打開的文件何時關閉
- 14. 如何知道何時使用shell在vi中打開文件?
- 15. 如何獲取文件的文件路徑我只知道名稱? C#
- 16. Powershell如何使用只知道文件名一部分的測試路徑
- 17. 如何知道什麼文件在重新打開時崩潰?
- 18. 如何使用_TCHAR *作爲文件名打開文件? C/C++
- 19. 當文件名有兩倍空格時文件無法打開
- 20. 我如何打開python變量作爲文件名的一部分的文件?
- 21. 如何在不知道文件名時使用wget文件?
- 22. VBA - 使用部分文件名打開SharePoint文件?
- 23. C打開文件:打開文件
- 24. Flash Player如何知道您何時成功上傳文件?
- 25. 如何在打開新文件時打開文件(打開文件)?
- 26. 打開%%文件名
- 27. C#打開Url並下載文件,文件名更改的最後部分
- 28. 如何知道文本文件底部何時到達
- 29. 當您不知道範圍名稱時,從VB.net寫入Excel文件
- 30. Git如何知道當我沒有,但打算如何重命名文件?
兩件事情:首先,請註明(和標籤)平臺(Windows,Mac,iOS等) - 文件操作通常取決於平臺。其次,請在此處詳細說明您的工作流程,以及您是在創建文件,還是在概念上如何搜索文件等。 – 2011-02-25 22:50:58