• 締切済み

ファイルオープンについて

ファイルオープンは,具体的にファイル名を指定しなければならないのでしょうか? 例えば,".ini"の拡張子を持つ任意のファイルをファイルオープンしたいと思っています。 または,そのディレクトリ内にあるファイル名全てを列挙する方法が知りたいです。 ご存知の方,何卒アドバイスを下さるようにお願いします。

みんなの回答

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.3

老婆心ながら… UNIXのファイルシステム(i-nodeファイルシステム)では1ディレクトリに数千個もファイルを置くとopen/closeにとんでもない時間がかかります。 i-nodeはカスケード方式ですから…。 1ディレクトリに置くファイル数を制限してディレクトリ分割することをオススメします。 top/a/a*.ini top/b/b*.ini ... こんな感じでもいいし、時間で分割してもいいし。 もっとアクセス速度を上げるならファイル作成時にハッシュ表を作ってしまうほうがいいでしょう。 無駄なディレクトリ検索をしなくて済みます。 仕様上どうしようもないかもしれませんが…。

  • arata
  • ベストアンサー率49% (139/279)
回答No.2

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

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

「任意のファイルをオープン」なんていう危険な関数は標準では用意されません。 どうしても必要なら(必要な状況は思いつきませんが…)作るしかないですね。 環境が指定されていないのですがWindowsでいいですか? 言語はCでいいですか?C++ですか? とりあえず、Win32APIを使ってCで書くなら FindFirstFile() FindNextFile() FindClose() これらを組み合わせればディレクトリ(フォルダ)内のファイルの列挙は可能です。 UNIX系ならdirent.hを参照してください。 拡張子が指定されているのでMacintoshは除外しましたが必要なら調べますよ。 (多分PBコールにあるから)

__sourin__
質問者

補足

ご親切なアドバイスを頂きまして,本当にありがとうございます。 初心者なので,とんちんかんな事を言っていたらごめんなさい。環境は,UNIXでC言語を使っています。 必要と思ったきっかけは,"○○○.ini"というファイルが,数千個ほどありまして,それらを各々加工(フィルタ)して"○○○.dat"というファイルにしようと思ったからです。 これからdirent.hを調べてみます。 まだ分からない事があると思いますので,その時はまたよろしくお願いします。ありがとうございました。

関連するQ&A

  • ディレクトリ内の全ファイルをオープンする方法

    特定のディレクトリ内に存在する全てのファイルを順次オープン・クローズするプログラムを作成したいと思います。 例えば、特定のディレクトリに下記のファイルがあるとします。 A.txt B.txt このときにA.txtをオープンし内容を読み込みクローズし、次にB.txtを同じようにオープンし内容を読み込んでクローズするプログラムです。内容を読み込んで処理する部分は問題なく、また上記のように存在するファイルが決まっていれば何も問題はないのですが、下記の場合にはどのように存在するファイルを探せばよいのかがわかりません。 ・何ファイルあるかわからない ・存在するファイルは必ずテキスト ・ファイル名は決まっていない(perlで問題なく読み込めるファイル長) なお、特定のディレクトリに存在するファイルを順次全て読み込めればよいので、その読み込む順番にこだわりはありません。 どうぞよろしくお願い致します。

    • ベストアンサー
    • Perl
  • fin.open( ***)の時の、ファイルディレクトリ指定

    C++ において、fin.open(***), fout.open(***)を利用する場合の カット内におけるファイルのディレクトリ指定方法を教えてください。 例えば オープンしたいファイル”File1”がFDドライブ(A)にあった場合 fin.open( ここのカッコ内はどのように記述すればよいのでしょうか?) よろしくお願いします。

  • ディレクトリー内のファイル名へのアクセス

    Windows10を使っています。 ファイルエクスプローラーを使ってあるディレクトリーをオープンした時に表示されるファイル名一覧を、テキストとして任意の場所にセーブする方法はありませんか? ご存知の方がいらっしゃいましたら、どうか教えてください。お願いします。

  • エクセルVBAを利用したフォルダ内にあるファイルの指定エクセルシート貼り付け

    フォルダ内にある任意のファイル(拡張子のないテキストデータ)を開き、指定されたエクセルのシートに貼り付けするといった方法がわかりません。 どなたか分かる人がいましたら教えていただきたいです。 現在openなどを使用していますがファイルを指定すれば実行できるのですが任意のファイルになるとエラーになってしまいます。

  • ファイルのオープンについて

    いつもお世話になっています。 MFCを使ってのファイルの作成についての質問です。 ファイル名を引数としてそのファイルを作成したいのですが、ファイル名には"\","/"など使えない文字が存在します。 その文字が入ったていたら、falseを返すようにしたいのですが、どんな関数を使用すればいいのでしょうか? 今は指定された作成されたファイルをオープンするときに fileName.Open(FileName,CStdioFile::modeCreate|CStdioFile::modeWrite|CStdioFile::modeNoTruncate) のように開いてますがエラーにならず書き込みの時にエラーとなります。 作成時にエラーを出すにはどうしたらいいのでしょうか? よろしくお願いします

  • 拡張子「.rep」と言うファイルはどのソフトでオープンできるのでしょうか?

    こんにちは。 海外の同僚から、XXXXXX.repという、拡張子のファイルがメールで送信されてきました。これはどのソフトウェアから開けるのでしょうか? 既に、Word, Excel, Acrobat, PowerPointでオープンしようと、拡張子をそれぞれのものに替えて試みましたが、いずれもオープンできませんでした。 ご存知の方教えてください。よろしくお願いします。

  • ディレクトリ以下のファイル名を取得する

    ディレクトリ名を指定するだけで、 そのディレクトリ内にある全てのデータファイルを 読み込んで処理するプログラムをC++で作ろうと考えています。 その為に、ディレクトリ以下のファイルのファイル名を 取得する方法(命令)を教えて頂きたく思います。 よろしくお願いします。

  • OPENファイルを画面から読みとりたい

    1.Fortranでプロクラムを組むときに、OPEN文に入るINPUTファイル名を画面上で直接に入れて読みとりたいのです。そのアルゴリズムを教えてください。 2.Fortranで組んだプロクラムを用いて計算しその結果をあるファイルに出力した場合、そのディレクトリに同じ名前のファイルがあると、エラーが出ます。自動的に上書きすることは、できないんですか?教えてください。

  • fopenでファイルがオープンできません

    $fp = fopen(TEST_FILE, "w") としてオープンしようとすると Warning: fopen(mybasic9.txt): failed to open stream: No such file or directory と、オープンしようとしたファイルがない、と出ます そして、そのファイルをあらかじめ作っておくと OKです。 しかし fopen(TEST_FILE, "w") は該当ファイルがあればそれをオープンし 無ければ、新しく作成する、とFopenの仕様に出ています。 これは、今使っているサーバーの問題でしょうか 何か、避ける方法はないでしょうか よろしくお願いします

    • 締切済み
    • PHP
  • CSVファイルを任意のディレクトリに作成する方法につきまして

    CSVファイルを任意のディレクトリに作成するマクロを 作成しております。抜粋は下記です。 '(1)ディレクトリを指定するダイアログ表示(初期ファイル名はwOutputFileName) Application.Dialogs(xlDialogSaveAs).Show wOutputFileName '(2)ディレクトリのパスを取得 Current_path = CurDir '(3)wOutputFileNameにパスを代入 wOutputFileName = Current_path & "\" & wOutputFileName その後、(3)のファイルをオープンし、CSVとするデータを登録します。 ところが、(1)での指定で、自分の元ファイル(マクロのエクセルファイル)が名前をwOutputFileNameに変えて保存されるため 「書き込みができません」 というエラーが発生します。 作成したCSVファイルをダイアログにてディレクトリを 指定して保存する方法を教えていただけませんか? よろしくお願いいたします。

専門家に質問してみよう