C语言 获取文件大小的方法

作者 :
卿笃军

方法一:

获得文件大小需要用到2个函数:fseek()  ,  ftell()

fseek()函数:

原型:intfseek(FILE*stream,
long offset, int fromwhere);

参数:

stream: 第一个参数stream为文件指针
 
       offset
: 第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移
       
 fromwhere: 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、
SEEK_END 或 SEEK_SET

SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾

其中SEEK_SET,SEEK_CUR和SEEK_END依次为0,1和2.
简言之:
fseek(fp,100L,0);把文件内部指针移动到离文件开头100字节处;
fseek(fp,100L,1);把文件内部指针移动到离文件当前位置100字节处;
fseek(fp,-100L,2);把文件内部指针退回到离文件结尾100字节处。

参考文章:百度百科,fseek(),http://baike.baidu.com/view/656696.htm

ftell()函数:

原型: longftell(FILE*stream);

功能:返回当前文件位置,也就是说返回FILE指针当前位置。(也就是偏离文件首字符个数)

参考文章:百度百科,ftell(),http://baike.baidu.com/view/656699.htm


 1 #include <stdio.h>
2 #include <stdlib.h> //exit(0);
3
4 int main()
5 {
6 FILE *fp =NULL;
7 long n = 0;
8
9 if ((fp = fopen("Q.txt","r")) == NULL)
10 {
11 printf("文件打开失败.\n");
12 exit(0);
13 }
14 fseek(fp,0,2); //指针:移动到文件尾部
15 n = ftell(fp); //返回指针偏离文件头的位置(即文件中字符个数)
16
17 printf("%ld\n",n);
18
19 return 0;
20 }

方法二:

这里使用到 struct _stat结构体

st_atime  : 上次访问该文件的时间

st_ctime  : 文件创建时间

st_dev      : 文件所在磁盘

st_mtime :最后一次修改文件时间

st_size     : 文件大小

//...... 所有参数请参见MSDN


 1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include <time.h>
5
6 int main()
7 {
8 struct _stat buf; //注意创建一个结构体
9 int result;
10
11 result = _stat( "Q.txt", &buf );
12
13 printf( "文件大小 : %ld\n", buf.st_size );
14 printf( "所在磁盘 : %c:\n", buf.st_dev + ‘A‘ );
15 printf( "创建时间 : %s", ctime( &buf.st_atime ) );
16
17 return 0;
18 }

时间: 2024-08-05 23:47:45

C语言 获取文件大小的方法的相关文章

java获取文件大小的方法

目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.io.*中FileInputStream的available()方法和新的java..nio.*中的FileChannel 下面依次介绍这几种方法: 首先选择一个文件并查看这个文件在windows中显示的大小,为了测试准确性,我这里选取了一个大文件(超过2GB) 查看这个文件在windows中显示的大小: 使用在线转换工具将其转换成字节: 可以看

【MFC】获取文件大小的方法

[转载]原文地址:http://blog.csdn.net/coderwu/article/details/5652056 MFC 下可以通过 CFileStatus 获取文件大小. 1 ULONGLONG size; 2 CString strFilePath; 3 CFileStatus fileStatus; 4 5 if (CFile::GetStatus(strFilePath, fileStatus)) 6 { 7 size = fileStatus.m_size; 8 }

c/c++获取文件大小的方法

#include <iostream> #include <windows.h> #include <io.h> #include <sys\stat.h>using namespace std;void main() {    char *filepath = "C:\\1.txt";    //方法一         HANDLE handle = CreateFile(filepath, FILE_READ_EA, FILE_SHA

[转]VC++获取文件大小集锦

方法一: WIN32_FIND_DATA fileInfo; HANDLE hFind; DWORD fileSize; const char *fileName = 文件的路径及名字; hFind = FindFirstFile(fileName ,&fileInfo); if(hFind != INVALID_HANDLE_VALUE) fileSize = fileInfo.nFileSizeLow; FindClose(hFind); 方法二: HANDLE hFile; // the

【转】Java中获取文件大小的正确方法

本文出处:http://blog.csdn.net/chaijunkun/article/details/22387305,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文. 今天写代码时需要实现获取文件大小的功能,目前有两种实现方法,一种是使用File的length()方法:另外一种是使用 FileInputStream的available()方法,当InputStream未进行read操作时,available()的大小应该是等于 文件大小的.但

C/C++ 获取文件大小

面试的时候面试官提到了怎样获取文件的大小,现在总结如下: 在C语言中测试文件的大小,主要使用二个标准函数. 1.fseek 函数原型:int fseek ( FILE * stream, long int offset, int origin ); 参数说明:stream,文件流指针:offest,偏移量:orgin,原(始位置.其中orgin的可选值有SEEK_SET(文件开始).SEEK_CUR(文件指针当前位置).SEEK_END(文件结尾). 函数说明:对于二进制模式打开的流,新的流位置

Java中获取路径的方法_自我分析

就目前的我来说最常用的两种获取路径的方法是  class.getRecource(filename) 和 class.getclassloader.getRecource(filename) 这两者的区别其实很简单就是路径的时候有点不同,这里主要讲两个参数,其他的路径获取,其他的话在根据相对路径逐一查找就行了 class.getRecource(filename): 参数"/" 表示获取根目录; (即我们常用到的bin目录[字节码文件存放的目录] " "  表示获取

ios NSFileManager和NSFileHandle(附:获取文件大小 )

转自 http://blog.csdn.net/zhibudefeng/article/details/7795946 //file 文件操作 NSFileManager 常见的NSFileManager文件的方法: -(BOOL)contentsAtPath:path                从文件中读取数据 -(BOOL)createFileAtPath:path contents:(BOOL)data attributes:attr      向一个文件写入数据 -(BOOL)rem

win10 uwp 从StorageFile获取文件大小

本文主要:获取文件大小 private async Task<ulong> FileSize(Windows.Storage.StorageFile file) { var size = await file.GetBasicPropertiesAsync(); return size.Size; }//32ddd4227a66713e1329214424c4be9b 在群里看到有大神问我就写出,虽然少,在没看到他们说之前没想到,九幽开发者:53078485 参见:http://stackov