アプリ版:「スタンプのみでお礼する」機能のリリースについて

ファイルオープンは,具体的にファイル名を指定しなければならないのでしょうか?
例えば,".ini"の拡張子を持つ任意のファイルをファイルオープンしたいと思っています。

または,そのディレクトリ内にあるファイル名全てを列挙する方法が知りたいです。

ご存知の方,何卒アドバイスを下さるようにお願いします。

A 回答 (3件)

「任意のファイルをオープン」なんていう危険な関数は標準では用意されません。


どうしても必要なら(必要な状況は思いつきませんが…)作るしかないですね。

環境が指定されていないのですがWindowsでいいですか?
言語はCでいいですか?C++ですか?

とりあえず、Win32APIを使ってCで書くなら
FindFirstFile()
FindNextFile()
FindClose()
これらを組み合わせればディレクトリ(フォルダ)内のファイルの列挙は可能です。

UNIX系ならdirent.hを参照してください。

拡張子が指定されているのでMacintoshは除外しましたが必要なら調べますよ。
(多分PBコールにあるから)

この回答への補足

ご親切なアドバイスを頂きまして,本当にありがとうございます。

初心者なので,とんちんかんな事を言っていたらごめんなさい。環境は,UNIXでC言語を使っています。

必要と思ったきっかけは,"○○○.ini"というファイルが,数千個ほどありまして,それらを各々加工(フィルタ)して"○○○.dat"というファイルにしようと思ったからです。

これからdirent.hを調べてみます。
まだ分からない事があると思いますので,その時はまたよろしくお願いします。ありがとうございました。

補足日時:2001/01/07 05:01
    • good
    • 0

UNIXの場合、されようとしている事でしたら、



$ 作成するフィルター *.ini

のように、ワイルドカードで、ファイルを指定してやれば、mainの引数にファイル名が展開された状態できます。
(しばらくUNIX触ってないのでワイルドカードが間違っているかもしれません。)
あとは、
・引数のファイルをオープン
・このファイル名の拡張子を変更したものをオープン
・処理結果を出力する
を繰り返せばいいのでは?
    • good
    • 0

老婆心ながら…



UNIXのファイルシステム(i-nodeファイルシステム)では1ディレクトリに数千個もファイルを置くとopen/closeにとんでもない時間がかかります。
i-nodeはカスケード方式ですから…。

1ディレクトリに置くファイル数を制限してディレクトリ分割することをオススメします。
top/a/a*.ini
top/b/b*.ini
...
こんな感じでもいいし、時間で分割してもいいし。

もっとアクセス速度を上げるならファイル作成時にハッシュ表を作ってしまうほうがいいでしょう。
無駄なディレクトリ検索をしなくて済みます。

仕様上どうしようもないかもしれませんが…。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!