精华内容
下载资源
问答
  • 基于c++标准库计算文件大小

    千次阅读 2016-09-16 14:59:30
    不过书中也没有直接的计算文件大小的函数。只有操作流的读写位置的方法。模仿c中的思路,计算文件结尾的读写位置减去文件起始的读写位置就是文件的字节数。 unsigned int GetFileLength(ifstream &f) { ...

    原文:http://www.programgo.com/article/52472798285/

    前几天用c++写个小程序,需要想得到文件的大小,以前用的是c的办法。但是后面的文件操作都是用c++的io流做的,怕用c的FILE会有冲突,所以想用c++的方式实现,去网上一搜居然没有,全是用c和windows API的,难道c++这么强大的语言居然没这功能,不可能啊,翻出《c++标准程序库》重看了一下fstream的内容,才找到了答案。不过书中也没有直接的计算文件大小的函数。只有操作流的读写位置的方法。模仿c中的思路,计算文件结尾的读写位置减去文件起始的读写位置就是文件的字节数。

    unsigned int GetFileLength(ifstream &f)  
    {  
        ifstream::pos_type old=f.tellg();  
        f.seekg(0,ifstream::beg);  
        ifstream::pos_type start=f.tellg();  
        f.seekg(0,ifstream::end);  
        ifstream::pos_type end=f.tellg();  
        f.seekg(old);  
        return end-start;  
    }  

    不过文件流要以二进制的方式打开

    ifstream f("zqc.torrent",ifstream::binary);  
    cout<<GetFileLength(f);  

    补充:
    另一种易懂的方法:先通过tellg()函数获取文件指针的位置,然后后通过seekg函数将文件指针移到文件末尾,在通过tellg函数获取文件指针的位置,此时的文件位置就是文件的长度,最后通过seekg函数将文件指针位置恢复到原来的位置。

    long GetFileLength(ifstream&ifs){
        long tmppos;
        long respos;
        tmppos=ifs.tellg();//先保存最初位置
        ifs.seekg(0,ios::end);//将指针移到未见末尾
        respos=ifs.tellg();//保存末尾位置,即为文件大小
        ifs.seekg(tmppos,ios::beg);//恢复文件指针
        return respos;  //返回文件大小
    }
    展开全文
  • 根据byte计算文件大小

    千次阅读 2017-11-21 16:03:25
    - (id)transformedValue:(NSString *)value { double convertedValue = [value doubleValue]; int multiplyFactor = 0; NSArray *tokens = [NSArray arrayWithObjects:@"bytes",@"KB",@"MB",@"GB",@"TB",
    - (id)transformedValue:(NSString *)value
    {
        double convertedValue = [value doubleValue];
        int multiplyFactor = 0;
        NSArray *tokens = [NSArray arrayWithObjects:@"bytes",@"KB",@"MB",@"GB",@"TB",@"PB", @"EB", @"ZB", @"YB",nil];
        while (convertedValue > 1024) {
            convertedValue /= 1024;
            multiplyFactor++;
        }
        return [NSString stringWithFormat:@"%4.1f%@",convertedValue, [tokens objectAtIndex:multiplyFactor]];
    }
    展开全文
  • 1、通过File 的length() 方法计算文件大小; 2、使用FileInputStream后通过FileChannel的size方法计算文件大小; 3、通过FileInputStream的available()方法计算文件大小; 代码示例: package encryption; import...

    1、通过File 的length() 方法计算文件大小;

    2、使用FileInputStream后通过FileChannel的size()方法计算文件大小;

    3、通过FileInputStream的available()方法计算文件大小;


    代码示例:

    package encryption;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.nio.channels.FileChannel;
    
    public class Test02 {
    
    	public static void main(String[] args) throws IOException {
    
    		// 获取文件大小的三种方法
    		
    		//大文件
    		String fileStr = "E:\\src\\cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso";
    		//小文件
            String fileStr01 = "E:\\src\\Chrome-Goagent.7z";
    		
    		File file = new File(fileStr);
    
    		long size01 = getFileSize01(file);
    		long size02 = getFileSize02(file);
    		int  size03 = getFileSize03(file);
    		
    		System.out.println("小文件计算文件大小");
    		System.out.println("文件名称:"+file.getName());
    		System.out.println("length方法获取文件大小:"+size01+" byte.");
    		System.out.println("FileChannel方法获取文件大小:"+size02+" byte.");
    		System.out.println("available方法获取文件大小:"+size03+" byte.");
    		System.out.println("\nInteger类型数据的最大值:"+Integer.MAX_VALUE);
    
    	}
    
    
    	/*
    	 * 获取文件大小的方法01:
    	 * 通过文件的length() 方法获取文件大小,这个通常可以应用于本地文件的大小计算;
    	 * */
    	private static long getFileSize01(File file) {
    
    		return file.length();
    	}
    
    	/*
    	 * 获取文件大小的方法02:
    	 * 通过FileChannel类来获取文件大小,这个方法通常结合输入流相关,
    	 * 因此可以用于文件网络传输时实时计算文件大小;
    	 * */ 
    	private static long getFileSize02(File file) throws IOException {
    
    		FileInputStream fis = new FileInputStream(file);
    		FileChannel fc = fis.getChannel();
    		return fc.size();
    	}
    	
    	 /*
    	  * 获取文件大小的方法03:
    	  * FileInputStream的available()方法看可以用于小文件的文件大小计算,
    	  * 因为available()的返回值类型为int型,可能会存在溢出的情况,
    	  * 所以 available()方法计算文件大小不建议使用;
    	  * */
    		private static int getFileSize03(File file) throws IOException {
    
    			FileInputStream fis = new FileInputStream(file);
    			
    			return fis.available();
    		}
    }
    


    计算大文件时:cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso

    大文件计算文件大小
    文件名称:cn_windows_7_ultimate_with_sp1_x64_dvd_618537.iso
    length方法获取文件大小:3419052032 byte.
    FileChannel方法获取文件大小:3419052032 byte.
    available方法获取文件大小:2147483647 byte.
    
    Integer类型数据的最大值:2147483647
    

    计算小文件时:Chrome-Goagent.7z
    小文件计算文件大小
    文件名称:Chrome-Goagent.7z
    length方法获取文件大小:105959048 byte.
    FileChannel方法获取文件大小:105959048 byte.
    available方法获取文件大小:105959048 byte.
    
    Integer类型数据的最大值:2147483647

    优缺点比较:

    1、length() 方法的返回值是long类型的,FileChannl的size()方法是long类型的,FileInputStream的available() 方法是int类型的;

    2、在计算大文件的时候不能使用FileInputStream的available() 方法,这样计算结果会超出int类型最大值会产生溢出导致计算结果不准确;

    3、在计算大文件的时候建议使用方法一和方法三,使用方法三会产生int类型溢出错误;

    4、同时,在计算本地文件大小的时候建议使用方法一,length() 的方式计算文件大小;在计算网络传输文件的时候建议使用FileChannel的size() 方法,方法二包含在FileinputStream中使用具有较好的网络性能


    展开全文
  • Java 计算文件大小

    千次阅读 2015-09-06 15:43:07
    Java 计算文件的信息没有C,C++的方便了,下面介绍几个常用求文件大小的方法。

    Java 计算文件的信息没有C,C++的方便了,下面介绍几个常用求文件大小的方法:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.nio.channels.FileChannel;
    
    public class TestFileSize {
        //方法一
        private static Long getReportFileSize(String filePath) {
    
            Long size = 0L;
            File f = new File(filePath);
            if (f.exists() && f.isFile()) {
                size = f.length();
                System.out.println("方法一:\n File:"+ filePath + "\nsize:" + size + "\n");
            }
            else {
                System.out.print("\nfile doesn't exist or is not a file\n");
            }
            return size;
        }
        //方法二
        private static int getReportFileSize2(String filePath) {
    
            File f= new File(filePath);  
    
            FileInputStream fis= null; 
            int size = 0;
            if (f.exists() && f.isFile()) {
                try {
                    fis= new FileInputStream(f);  
                    size = fis.available();
                    System.out.println("方法二:\nFile:"+ filePath + "\nsize:" + size + "\n");
                    fis.close();
                }
                catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();          
                }            
            }
            else {
                System.out.print("\nfile doesn't exist or is not a file\n");
            }
    
            return size;
    
        }
    
        //方法三
        private static void getReportFileSize3(String filePath) {
    
            File f= new File(filePath);  
    
            FileInputStream fis= null; 
            FileChannel fc = null;
            Long size = 0L;
            if (f.exists() && f.isFile()) {
                try {
                    fis= new FileInputStream(f);  
                    fc = fis.getChannel();
                    size = fc.size();
                    System.out.println("方法三:\nFile:"+ filePath + "\n asize:" + size + "\n");
                    fis.close();
                }
                catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();          
                }            
            }
            else {
                System.out.print("\nfile doesn't exist or is not a file\n");
            }
    
    
        }
    
        public static void main(String[] args) {
    
            String filePath = "D:\\Downloads\\FlashFXP.tar";
            getReportFileSize(filePath);
            getReportFileSize2(filePath);
            getReportFileSize3(filePath);
        }
    }

    小于2G
    超过2G

    可能用C++习惯了总感觉用java在获取文件时间,大小等一些文件信息的时候没有C++方便。

    1. 方法一最简洁,效率最高,直接用文件File指针,length函数返回文件或者文件夹的大小。

      Returns the length of the file denoted by this abstract pathname. The return value is unspecified if this pathname denotes a directory.
      注意管道文件的时候返回文件的大小为0L

    2. 方法二用FileInputStream fis,利用available函数来获取文件的大小, 注意这个函数返回大小是整形,所以所能计算最大的文件的大小只有2G左右,效率相对也较低。

    3. 方法三用FileInputStream fis,利用getChannel函数来获取文件的大小,不存在上面函数的问题

    展开全文
  • C语言——计算文件大小(一)

    千次阅读 2015-07-31 11:39:19
    #define _CRT_SECURE_NO_WARNINGS #define PATH "C:\\Users\\michael\\Desktop\\mima.txt" #include ...* @brief 方法一:计算文件大小,单位是字节 * @param() * @return int 文件大小*/ int getFileSize
  • /** *复制到类中就可以直*接调用 */public class FileSizeUtil { ...// 获取文件大小单位为B的double值 public static final int SIZETYPE_KB = 2;// 获取文件大小单位为KB的double值 public static
  • 计算文件大小和base64解码图片

    千次阅读 2016-12-05 14:54:51
    //文件大小 private static String getFileSize(File file) { Long fileSize = file.length(); if (fileSize.equals((Long) 0L)) { return "0KB"; } double kiloByte =
  • 文件大小计算与有意思的显示

    千次阅读 2018-12-27 15:52:13
    计算一个文件,一个文件夹的大小这个概念其实很基础,然后发现很有意思。 拿《鬼吹灯》的一个txt文档做实验。 首先基础知识: 1m=1024k 1k=1024byte 1byte=8bite 2、结论 文件显示的大小k,m的计算 mac 用的是 1000 ...
  • //获取文件大小单位为B的double值 public static final int SIZETYPE_KB = 2 ; //获取文件大小单位为KB的double值 public static final int SIZETYPE_MB = 3 ; //获取文件大小单位为MB的double值 ...
  • js 计算文件大小

    千次阅读 2018-08-06 16:30:48
    var isIE = /msie/i.test(navigator.userAgent) &amp;&amp; !window.opera;   function fileChange(target) {   var fileSize = 0;   if (isIE &amp;&... ...
  • 精确计算base64文件大小(含测试文件和源码) 苟且,诗与远方 1.base64简介 Base64这个术语最初是在“MIME内容传输编码规范”中提出的。Base64不是一种加密算法,虽然编码后的字符串看起来有点加密的赶脚。它...
  • 在视频编码领域,比特率常翻译为编码率,单位是Kbps,ps是每秒的意思,例如800Kbps其中,1K=1024 1M=1024Kb 为 比特(bit)这个就是电脑文件大小的计量单位,1KB=8Kb,区分大小写,B代表字节(Byte)s 为 秒(second)...
  • 巧妙实现之c语言计算文件大小

    千次阅读 2011-08-03 21:36:52
    今天面试,面试官问我c语言里面有木有函数计算一个文件大小,是哪一个? 我纠结了一小会儿,我想有吗?当时也没回答出来,回来查才知道,用的是用lseek和ftell结合使用实现的。 The ftell() function returns ...
  • //获取文件大小,并以KB 或 MB 来表示 CString GetFileSize(LONG size) { CString _size; //判断大小有没有超过1 if (size<(1024*1024)) { _size.Format("%.2lfKB",size/1024.0); }else if(1024*...
  • IOS 计算文件大小

    千次阅读 2017-04-17 16:21:00
    通常用于删除缓存的时,计算缓存大小//获取缓存文件路径-(NSString *)getCachesPath{ // 获取Caches目录路径 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); ...
  • contentsOfDirectoryAtPath: 以非递归的方式获取当前文件夹下的文件夹和文件路径 subpathsAtPath: 以递归的方式获取当前文件夹下 所有 文件夹和文件路径
  • Java计算上传文件大小

    千次阅读 2015-12-18 10:08:51
    Java计算上传文件大小 /** * 计算文件大小 * * @param file 文件length * @return 文件大小 */ public String FormetFileSize(Long fileLength) { String fileSizeString = ""; DecimalFo
  • C语言获取文件大小

    千次阅读 2019-03-11 14:37:37
    一、获取文件系统属性,读取文件大小。 在C语言库函数中有stat函数,可以获取文件的基本信息,其中就有文件大小。 1 2 3 4 5 6 7 8 9 #include&lt;sys/stat.h...
  • du -sh houses/  
  • JQuery获取文件大小

    千次阅读 2018-07-12 19:50:41
    &lt;input type="file" id="file" /&gt; &lt;script&gt; var size = $("#file")[0].files[0].size; &lt;/script&gt;
  • 根据UIImage对象计算文件大小

    万次阅读 2012-12-22 17:27:13
    2. 方法1 有一个问题 就是如果图片很大的话, 会遇到 内存紧张时 奔溃的情况,所以最好不用将图片在加载到内存的方法, 如果有图片路径可以采用文件来判断,如果没有,下面的代码可以计算出 UIImage
  • python中获取文件大小We can get file size in Python using the os module. 我们可以使用os模块在Python中获取文件大小。 Python中的文件大小 (File Size in Python) The python os module has stat() function ...
  • 文章来自:https://blog.csdn.net/mfcing/article/details/53184921获取文件大小Windows提供了好几个API函数来获取文件大小,还可以使用标准C和标准C++库函数来获取(当然了,标准库函数的底层实现也是调用了Windows...
  • php 或 js 计算base64 文件大小

    千次阅读 2018-08-22 15:32:53
    附加 一段js计算base64文件大小,这里有一个图片裁剪过程,所以文件获取有点不一样,详细的可以看我的下一篇博文。 //这里因为使用了图片裁剪的插件,所以文件流是 dataURL var strLen = dataURL.length; ...
  • 文件大小 和 文件占用空间

    千次阅读 2020-10-02 17:29:39
    查看文件大小 $ ls -lh b.txt -rw-rw-r-- 1 liyongjun liyongjun 1 10月 2 16:53 b.txt 文件中仅存放一个字符 ‘b’ ,所以文件大小为 1 查看文件占用空间 $ du -ah 4.0K ./b.txt 文件大小 和 文件占用空间 ...
  • 1.java中获取上传文件大小,时长 在java中获取上传文件的时长方法多种,在此我用其中的一种,不过需要引入一个jave.jar,此jar在maven仓库总下载不到,我保存到自己的网盘中了,链接: ...
  • 计算一个目录或者文件大小 示例代码如下: unsigned int calculate_size(QString path) { QFileInfo info(path); unsigned int ret = 0; if( info.isFile() ) // 是文件获取文件的大小 { ret = info...
  • android 获取文件大小

    万次阅读 2018-01-10 08:43:13
    今天,简单讲讲android在读取文件时,如何获取文件大小。 目前有两种实现方法,一种是使用File的length()方法;另外一种是使用FileInputStream的available()方法,当InputStream未进行read操作时,available()...
  • linux c 获取文件大小

    千次阅读 2018-05-16 17:55:50
    问题描述:在使用c语言获取文件大小的时候发现有的文件大小可以正确获取,有的不能,以下为初始代码unsigned long get_file_size(const char *filename) { unsigned long size; FILE* fp = fopen( filename, &...
  • C语言获取文件大小

    万次阅读 多人点赞 2014-05-27 15:09:07
    Java中File类有个length函数,Python中os.path包中有个getsize函数,C语言中却没有直接对应的函数获取文件大小。  目前,网上有一种流传很广的方法,读取文件到内存,然后跳转到文件末尾,查看跳转的长度。代码如下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 805,916
精华内容 322,366
关键字:

计算文件大小