2017-07-18 45 views
0

ファイルを開くときに保存された設定ファイルを開く方法があります。これは、別のファイルセットを開いたときに自動的にファイルを開くためです。MFC、特定のファイルを検索するタイプ

これを行うには、1つしかないことを確認するために、特定のタイプのファイルの数を数えたいと思います。 このフォルダには他のファイルタイプもあります私はそれらの周りを回る方法が必要です。

私は既にフォルダへのパスを持っていますが、ファイルタイプを簡単に検索する方法はありますか?おそらく名前を取得するでしょうか?

私はMFCには新しく、それほど古くて、私が望む特定の分野で多くの助けを見つけることができません。 ありがとう!

編集(説明のため) - たとえば、3つの単語文書とテキストファイルを含むフォルダがあるとします。私はそれがフォルダを検索し、.docxである3つのファイルまたは.txtである1つのファイルがあると言うことができるようにしたい。見つかったファイルの名前を保存できるといいですね。

+0

あなたの質問は不明です。 [this](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365200(v = vs.85).aspx)をお探しですか? –

+0

残念ながら、私はそれらをリストアップする必要はありません、ただそれらを検索してください.3つの単語文書とテキストファイルを含むフォルダがあります。私はそれがフォルダを検索し、.docxまたは.txtである1つのファイルである3つのファイルがあると言うことができるようにしたい。見つかったファイルの名前を保存できるといいですね。 – ReddestHorse

+0

ファイルの一覧表示とファイルの検索の違いは何と思いますか? – interjay

答えて

0

私はCFileFindで解決したいと考えています。 以下は、CFileFindを使用したサンプルです。 gwangsooが言ったことのオフ

CFileFind finder; 
static const TCHAR szFileToFind[] = _T("C:\\WINDOWS\\SYSTEM.INI"); 

BOOL bResult = finder.FindFile(szFileToFind); 

if (bResult) 
{ 
    finder.FindNextFile(); 

    TRACE(_T("Root of %s is %s\n"), szFileToFind, (LPCTSTR)finder.GetRoot()); 

    TRACE(_T("Title of %s is %s\n"), szFileToFind,(LPCTSTR)finder.GetFileTitle()); 

    TRACE(_T("Path of %s is %s\n"), szFileToFind, (LPCTSTR)finder.GetFilePath()); 

    TRACE(_T("URL of %s is %s\n"), szFileToFind, (LPCTSTR)finder.GetFileURL()); 

    TRACE(_T("Name of %s is %s\n"), szFileToFind, (LPCTSTR)finder.GetFileName()); 

    finder.Close(); 
} 
else 
{ 
    TRACE(_T("You have no %s file.\n"), szFileToFind); 
} 
0

ビルは、私がGetFilePathとGetFileNameとCFileFindを使用しました。

しかし、私はHow to get list of files in a directory programmaticallyの答えから多くを取った。私の違いは、CFileFindを実装すること(それはむしろ反復的で非効率的になりますが、動作します)です。私が望むファイルタイプの部分文字列を見つけるときにはtcharの代わりにCStringを使用できます。

CFileFind finder; 
CString find; 
find = ".txt"; 
finder.FindFile(stored_path+"\\*"); 
WIN32_FIND_DATA search_data; 
memset(&search_data, 0, sizeof(WIN32_FIND_DATA)); 
HANDLE handle = FindFirstFile(stored_path+"\\*", &search_data); 
while(handle != INVALID_HANDLE_VALUE) 
{ 
    finder.FindNextFile(); 
    if (finder.GetFileName().Find (find) != -1) 
    { 
     save_count++; 
     if (save_count == 1) 
     { 
     save_name = finder.GetFileName(); 
     save_path = finder.GetFilePath(); 
     } 
    } 
    if(FindNextFile(handle, &search_data) == False) 
     break; 
} 

私はまた、四行目 finder.FindFile(stored_pa​​th + "\ *")を含みます。 私は現在(stored_pa​​thとして)保存していたフォルダの中に入る方法です。

助けてくれてありがとう!

関連する問題