ページ 11

フォルダの中にあるpngファイルの数と名前を取得したい

Posted: 2014年5月04日(日) 21:20
by wasawasa
こんにちは、いつもお世話になっています。
X個のpngファイルを含めたY個のファイルが入っている「Folder」という名前のフォルダがプロジェクトファイルと同じフォルダの中にあったとして、Folderフォルダの中にあるpngファイルの数をint型の変数に、Folderフォルダ内のpngファイル全ての名前をCHAR型の変数に格納するとしたらどうすればいいでしょうか?

特定のフォルダ内の全てのpngファイルを読み込むプログラムを有象無象のファイルが混ざっている状況も想定して記述したいのですが、名前も数も分からない場合はどうしたらいいのか見当が付かないので困っています。
何かいい方法は無いでしょうか?どなたかよろしくお願いします。

Re: フォルダの中にあるpngファイルの数と名前を取得したい

Posted: 2014年5月04日(日) 23:03
by YuO
OS等,どのような環境でしょうか。
また,「フォルダ」であって「ディレクトリ」ではないのですね。
オフトピック
フォルダとディレクトリは別物であることがあるので (e.g. Windows)。

Re: フォルダの中にあるpngファイルの数と名前を取得したい

Posted: 2014年5月05日(月) 10:45
by wasawasa
>>YuOさん
すみません、書き忘れていました。
OSはWindows7で、プログラミングに使用しているソフトはMicrosoft Visual C++ 2008 Express Editionです。
Windowsでのフォルダとディレクトリの違いは説明見てもよく分かりませんでした。

Re: フォルダの中にあるpngファイルの数と名前を取得したい

Posted: 2014年5月05日(月) 12:29
by なないと
ネットで少し調べればフォルダ内のファイル名を取得するプログラムは
簡単にでてくるのですが、何から何まで分からないということはないと思います。
少し作ってみてから再度質問してみたらどうでしょうか?

Re: フォルダの中にあるpngファイルの数と名前を取得したい

Posted: 2014年5月05日(月) 13:02
by Dixq (管理人)
FindFirstFile

FindNextFile
を用いることでファイル名一覧が取得できますよ。
http://d.hatena.ne.jp/s-kita/20100129/1264776052
そこから欲しいファイルだけフィルタリングすればOKです。

Re: フォルダの中にあるpngファイルの数と名前を取得したい

Posted: 2014年5月05日(月) 17:58
by YuO
すでにDixq (管理人)さんがFindFirstFileFindNextFileを紹介されているので,ディレクトリ下のファイルについては省略します。
wasawasa さんが書きました:Windowsでのフォルダとディレクトリの違いは説明見てもよく分かりませんでした。
ディレクトリは完全に物理的に存在する物です。
それに対して,フォルダーはディレクトリを含みますが,物理的に存在しない,例えば「ネットワーク」フォルダ (FOLDERID_NetworkFolder, CSIDL_NETWORK) も含みます。
ZIPやCABもフォルダーとなります。
エクスプローラーで表示される階層構造に含まれる物は,だいたいフォルダーです。

フォルダーを相手にするのであれば,SHGetDesktopFolderあたりを元に,IShellFolderとお友達になりながら調べていくことになるかと思います。
あとは,SHGetIDListFromObjectとかSHGetPathFromIDListとかでしょうか。
最終的にはディレクトリーに帰結させてFindFirstFile系で探した方が楽だとは思います。
オフトピック
EnumObjectsで非フォルダーを列挙させて,も可能ですが,FindFirstFileと違いワイルドカードによるフィルタリングができないので……。
► スポイラーを表示

Re: フォルダの中にあるpngファイルの数と名前を取得したい

Posted: 2014年5月06日(火) 17:51
by wasawasa
>>Dixq (管理人)さん
>>YuOさん

GetModuleFileName()で実行ファイルのパスを取得してから、それを元に目当てのフォルダのパスを組み立ててFindFirstFileとFindNextFileで読み込む、という方法でできるようになりました。ありがとうございます。