zoukankan      html  css  js  c++  java
  • 转帖:如何获取文件的大小

    起因:一个程序需要发送校验文件和文件内容。

    结果我把文件的大小理解成 String str='''';str.GetLength();导致不匹配~!!!!(竟然还比CFile f;f.GetLength()还要大~~)

    下面的是cnblogs的朋友~转帖~~~!

    C/C++多种方法获取文件大小

    http://www.cnblogs.com/cxun/archive/2009/02/24/1397153.html 

    源码下载:点击下载

    源码如下:

     

    #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文件无法打开,所以方法二、三无法获取文件大小,因此推荐使用方法一、四。

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

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

    Tag标签: 文件大小
    0
    0
    (请您对文章做出评价)
    « 上一篇:wuapi 相关文件下载URL

    » 下一篇:抒情版双截棍 

  • 相关阅读:
    「Poetize10」封印一击
    「Poetize10」能量获取
    vijosP1499炸毁燃料库
    BZOJ3550: [ONTAK2010]Vacation
    总结#3--一类最小割问题
    BZOJ1976: [BeiJing2010组队]能量魔方 Cube
    BZOJ2132: 圈地计划
    BZOJ2127: happiness
    BZOJ1754: [Usaco2005 qua]Bull Math
    920. 会议室
  • 原文地址:https://www.cnblogs.com/xianqingzh/p/1644149.html
Copyright © 2011-2022 走看看