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を使用していくこととしました。 また、ファイルの排他制御についてご指摘がありましたが、 自分のみ使うコンソールアプリケーションなので、 排他制御はしないで行ってしまおうと思っています。 |