C言語関係掲示板

過去ログ

No.1155 ファイルサイズの取得

[戻る] [ホームページ]
No.14874

ファイルサイズの取得
投稿者---だん(2004/06/23 17:32:30)


WinNT,VC++6.0でコンソールアプリケーションを
作成しています。
ファイルサイズをファイルを開く前に取得したいのですが、
可能でしょうか。そのような関数があれば教えていただけますでしょうか?
また、無理なようでしたら、ファイルを開いて、ファイルを読み出す前に
ファイルサイズを取得したいです。

[理由]
扱うファイルが巨大な為,アクセスする前にファイルサイズのチェックを
しておこうと考えています。
ファイルを処理していって最後にファイルサイズが大きすぎましたって
ことは避けたいと考えています。



No.14875

Re:ファイルサイズの取得
投稿者---nop(2004/06/23 17:37:43)


>WinNT,VC++6.0でコンソールアプリケーションを作成しています。
>ファイルサイズをファイルを開く前に取得したいのですが、可能でしょうか。

ファイルのサイズは、OSのAPIをコールする必要があります。
Windows の場合は「GetFileSize()」がこれにあたります。


No.14877

Re:ファイルサイズの取得
投稿者---だん(2004/06/23 17:54:46)


DWORD GetFileSize(
HANDLE hFile, // handle of file to get size of
LPDWORD lpFileSizeHigh
// pointer to high-order word for file size
);

MSDNで上記のような関数定義を見つけました。
そこで、質問です。
まずHANDLE,LPDWORDの型がよくわかりません。
CALL方法などを詳しく教えてもらえますか。
また、どこか詳しいサイトなどありましたら
そちらを教えていただけますか?





No.14879

Re:ファイルサイズの取得
投稿者---nop(2004/06/23 18:06:26)


>まずHANDLE,LPDWORDの型がよくわかりません。
>CALL方法などを詳しく教えてもらえますか。
>また、どこか詳しいサイトなどありましたら
>そちらを教えていただけますか?

まず、検索サイトで検索くらいして下さい。
例:検索キーワード Windows VC API GetFileSize



No.14891

Re:ファイルサイズの取得
投稿者---RAPT(2004/06/23 20:07:23)


_stat()



No.14906

Re:ファイルサイズの取得
投稿者---RiSK(2004/06/24 00:00:44)


>扱うファイルが巨大な為,アクセスする前にファイルサイズのチェックを
>しておこうと考えています。

ファイルサイズ確認とファイルのオープンの間に
ファイルサイズが変わってしまう可能性は考えましたか?
ファイルオープン後にファイルサイズが変わってしまう可能性は考えましたか?

排他オープンしてからファイルサイズを確認した方が良いかと。
# それが出来るかは未確認

一般的にファイルサイズをあらかじめ知るのは無理だそうな。
see:C FAQ 19


No.14907

Re:ファイルサイズの取得
投稿者---RiSK(2004/06/24 00:03:13)


>see:C FAQ 19

あう。これです。
C FAQ 19.12


No.14908

Re:ファイルサイズの取得
投稿者---YuO(2004/06/24 00:14:13)


>ファイルサイズをファイルを開く前に取得したいのですが、
>可能でしょうか。そのような関数があれば教えていただけますでしょうか?

開く前であれば,FindFirstFileを使って取得可能。
ただし,代替ストリームの大きさはこれでは取得できないので,
最終的に必要ならハンドル作るのだから,nopさんの書かれたGetFileSizeまたはGetFileSizeExがよいかと。



No.14916

Re:ファイルサイズの取得
投稿者---だん(2004/06/24 10:54:11)


皆様、ご意見ありがとうございました。
今回は_statを使用していくこととしました。
また、ファイルの排他制御についてご指摘がありましたが、
自分のみ使うコンソールアプリケーションなので、
排他制御はしないで行ってしまおうと思っています。