c++ builder XE4, 10.2 Tokyo > fileIO > 지정된 폴더의 하위 폴더에 파일이 있는지 확인. 그렇다면 path를 반환합니다.
8093 단어 yumlfileIOcppBuilder#migrated
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2018/01/09)
모든 폴더의 하위 폴더에있는 파일까지의 경로를 얻고 싶습니다.
ぃ tp // m / 7, f9 / ms / cb92, a2, d0, d73 a fb069
에서 하고 있던 것에 가깝지만, 파일 패턴(*.csv등)이 아니고, 파일 그 자체를 지정한다.
코드
UtilFolderSearch.h
//---------------------------------------------------------------------------
#ifndef UtilFolderSearchH
#define UtilFolderSearchH
//---------------------------------------------------------------------------
/*
ファイルをサブフォルダ含めて検索する
*/
class CUtilFolderSearch {
private:
public:
static String __fastcall CUtilFolderSearch::SearchFileInSubDir(String baseDir, String filename);
// テスト用
static String __fastcall CUtilFolderSearch::Test_SearchFileInSubDir();
};
#endif
UtilFolderSearch.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <IOUtils.hpp> // for TDirectory.XXX
#include "UtilFolderSearch.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#define DEBUG_DO_PRINT // デバッグ出力
/*
v0.1 2016/01/10
- Test_SearchFileInSubDir()追加
- SearchFileInSubDir()追加
- debug_outputDebugString()追加
*/
static void debug_outputDebugString(String prefix, String msg)
{
// あとでまとめてデバッグ出力をコメントアウトするため、関数にしている。
#ifdef DEBUG_DO_PRINT
String work = L"UtilFolderSearch >" + prefix + L": " + msg;
OutputDebugString(work.c_str()); // @ debug_outputDebugString
#endif
}
/* static*/String __fastcall CUtilFolderSearch::SearchFileInSubDir(String baseDir, String filename)
{
if (baseDir.Length() == 0) {
return L"";
}
TStringDynArray fileList;
TSearchOption option = TSearchOption::soAllDirectories; // all folders
fileList = TDirectory::GetFiles(baseDir, /* pattern=*/filename, option);
String res;
if (fileList.Length == 0) {
return L"";
}
return fileList[0];
}
/*static*/String __fastcall CUtilFolderSearch::Test_SearchFileInSubDir()
{
String baseDir = L"C:\\Program Files\\Windows NT";
String filename = L"wordpad.exe";
String filepath;
filepath = SearchFileInSubDir(baseDir, filename);
String msg;
if (filepath.Length() > 0) {
msg = L"Line63 > Found:" + filepath;
} else {
msg = L"Line63 > Not found";
}
debug_outputDebugString(L"Test_SearchFileInSubDir", msg);
}
실행 예
CUtilFolderSearch::Test_SearchFileInSubDir()를 실행하여 테스트 동작을 확인할 수 있다.
예로서 워드패드를 검색해 보았다.
(YUML에서는 원 마크가 잘 표시되지 않는 것 같습니다) 디버그 출력: UtilFolderSearch >Test_SearchFileInSubDir: Line56 > Found:C:\Program Files\Windows NT\Accessories\wordpad.exe 프로세스 Project1.exe (2532)
Reference
이 문제에 관하여(c++ builder XE4, 10.2 Tokyo > fileIO > 지정된 폴더의 하위 폴더에 파일이 있는지 확인. 그렇다면 path를 반환합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/7of9/items/843a889ecb41ac4747c0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)