zoukankan      html  css  js  c++  java
  • C/C++多种方法获取文件大小

    源码下载:点击下载

    源码如下:

    #include <iostream>
    #include 
    <io.h>
    #include 
    <sys\stat.h>
    #include 
    <afx.h>
    #define _AFXDLL
    using namespace std;

    void main()
    {
        
    // 此文件在工程打开状态下为不可访问
        char* filepath = "..\\test.ncb";

        
    // 方法一
        struct _stat info;
        _stat(filepath, 
    &info);
        
    int size = info.st_size;
        cout
    <<size<<endl;

        
    // 方法二
        FILE* file = fopen(filepath, "rb");
        
    if (file)
        {
            
    int size = filelength(fileno(file));
            cout
    <<size<<endl;
            fclose(file);
        }

        
    // 方法三
        CFile cfile;
        
    if (cfile.Open(filepath, CFile::modeRead))
        {
            
    int size = cfile.GetLength();
            cout
    <<size<<endl;
        }

        
    // 方法四
        HANDLE handle = CreateFile(filepath, FILE_READ_EA, FILE_SHARE_READ, 0, OPEN_EXISTING, 00);
        
    if (handle != INVALID_HANDLE_VALUE)
        {
            
    int size = GetFileSize(handle, NULL);
            cout
    <<size<<endl;
            CloseHandle(handle);
        }
    }

    VS2005:若编译链接不通过,需要修改工程设置:

    (1) Configuration Properties -> C/C++ -> Code Generation -> Runtime Library, 选择"Multi-threaded Debug(/MTd)"

    (2) Configuration Properties -> Linker -> Input -> Ignore Specific Library, 输入"msvcprtd.lib"

    例子中,由于在工程打开状态下,test.ncb文件无法打开,所以方法二、三无法获取文件大小,因此推荐使用方法一、四。

    如果还有其它方法,请大家补充。

    感谢贼寇在何方补充了第四种方法!

  • 相关阅读:
    Elasticsearch
    区块链 blockchain
    IM协议
    MQ,互联网架构解耦神器
    服务中的 API 网关(API Gateway)
    OSI七层与TCP/IP五层网络架构详解
    JQ input标签限制输入数字或字母
    c:forEach用法
    jquery在线引用
    JSONObject使用方法
  • 原文地址:https://www.cnblogs.com/cxun/p/1397153.html
Copyright © 2011-2022 走看看