ファイルサイズの取得 – プログラミング – Home

通知
すべてクリア

[解決済] ファイルサイズの取得


けいこ
 けいこ
(@けいこ)
ゲスト
結合: 24年前
投稿: 11
Topic starter  

はじめまして!!けいこと申します。。
VC++初心者なので簡単な質問で申し訳ないのですが、
どなたか知っている方お教え下さい。

ファイルポインタでファイルサイズを取得したいのですが、
何か便利な関数があったりするのでしょうか?
-----------------------------------------------
例:
if( (fd = open ( fname , 3 ) ) < 0 )
{
  /* ファイルオープンエラー */
  return -2 ;
}

fsize = ???(fd)
-----------------------------------------------

???にあたる関数を教えて頂けないでしょうか。
環境⇒VC++6.0でOSはWindowsNTです。
宜しくお願い致します。


引用未解決
トピックタグ
宍戸 輝光
 宍戸 輝光
(@宍戸 輝光)
ゲスト
結合: 23年前
投稿: 3
 

 ファイルポインタでやるなら

FILE *fp=fopen(fn,rb);

fseek(fp,0,SEEK_END); /* ファイルの末尾にシーク */
size=ftell(fp)+1; /* 現在の位置を取得 */
rewind(fp); /* ファイル先頭にまき戻す */

 という感じですね。ただ、VC++(Win32)なら
CreateFileで取得したハンドルでGetFileSize
した方が簡単でしょう。


返信引用
けいこ
 けいこ
(@けいこ)
ゲスト
結合: 24年前
投稿: 11
Topic starter  

宍戸 輝光さん回答ありがとうございます!!
下記の処理で上手くいきました。
例Start--------------------------
int fd ;
long fsize ;

fd = open ( c:\\dummy.txt , _O_RDWR );
fsize=lseek (fd , 0 , SEEK_END); /* 末尾に移動*/
lseek (fd , 0 , SEEK_SET); /* 先頭に移動*/
例End--------------------------

・・が、またまた質問なのですが、
もしlseekを使用せずに何か別の方法があれば教えて頂けないでしょうか。
(ひつこくてすみません!!)
open処理の後に
fsize = ???(fd)
の???にあたる関数ってGetFileSize以外に
あるのでしょうか。。
GetFileSizeはopenの時には使用出来なかったので・・・。
(やっぱり無いのかな?)

心あたりがあればで全然結構ですので。


返信引用
TAKA
 TAKA
(@TAKA)
ゲスト
結合: 23年前
投稿: 117
 

これで出来ると思いますが、詳しくはHELPで調べて勉強しましょう

CFileStatus statusAf; // ファイル情報
IsAfFile = CFile::GetStatus(strGDTFullPath, statusAf); // 静的関数
ullNeed = statusAf.m_size; // ファイルサイズ


返信引用
coshat
 coshat
(@coshat)
ゲスト
結合: 23年前
投稿: 12
 

>宍戸 輝光 の方法

2GB以上のファイルサイズを得られませんけど、
その対策はどうしましょうか?


返信引用
けいこ
 けいこ
(@けいこ)
ゲスト
結合: 24年前
投稿: 11
Topic starter  

TAKAさんの方法でも上手くいきました。
みなさんどうもありがとうございました。。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました