将文件的大小改变为指定的字节数,比如原本是20M,现在要求精确改变为17,231,324B,请问用什么函数实现??

解决方案 »

  1.   

    文件的大小好像不能改变吧。
    可以这样,例:
                System.IO.FileInfo f = new System.IO.FileInfo("d:\\1.txt");
                MessageBox.Show("d:\\1.txt size is " + f.Length + "Byte");
      

  2.   


    int B = 17231324;
    int KB = B / 1024;
    int MB = KB / 1024;
    int GB = MB / 1024;
      

  3.   


    1M =1024 Kb
    1Kb= 1000Byte
    So: 20M = 20 * 1024 * 1000 = 20480000(Byte)
      

  4.   

    楼上的两位,我没有看懂你们的代码啊.我想实现这种功能: 
    一个xxx.abc 文件,它原本有241K,现在我想把它改变为172K,用什么函数去操作它??我觉得应该有相关的函数去操作吧,像常规的TXT文本,都能收缩自如.
      

  5.   

    回楼上的,我是产生了如此的疑问:假设我首先创建了一个TXT文本,然后向里面写入了100W字的数据.可能大概有2M大小.现在我只想让这个TXT文本存储100个字就可以了,那么很明显,这100个字只需要200B大小就足够了.如果我是打开TXT文本直接处理,那么文件肯定能从2M变到200B,而如果用C#来处理,我所知道,就是只能先把这个文件删除了,再新建一个同名字的文件,并向其中写入100字.我首先想知道的是:是不是TXT文件每一次保存时,系统都会先删除该文件,再把该TXT内存中的文本增加输入到新建的文件中?还是通过另外的我不知道的方式去修改这个文本的大小,使它最后的占用硬盘空间变小.
      

  6.   

    不管用哪种方法,文件大小与文件中的文本大小是一致的,操作系统不会往文件中存多余的内容。TXT文件的结构:每行后面有隐藏的两个字符 回键符和换行符(\r\n)键值(13,10)。你的文件大小,就等于可视内容的字节数+行数*2如:把下面三行复制到文件temp.txt中,文件大小是15字节。
    12中
    abc
    as
      

  7.   

    是我表达有问题吗??感觉大家都没明白我的疑问啊!!原因可能是我不大明白操作系统如何对文件进行各种操作的原理吧。比如有三个有内容的txt文件、word、excel,它们大小为1M。我打开它们,然后把里面的内容完全删除并保存,结果:
    txt文件的大小为0.
    word的大小约为16K
    excel的大小约为16K也就是它们的大小都比原来更小了。现在我又用C#以二进制方式或记录方式向一个自定义文件mx.aa添加数据,mx.aa的大小为800K,但是随后,我希望mx.aa只有10K左右大小,那么C#中该用什么样的函数去减小这个mx.aa的大小呢?? 我所知道的文件操作函数,只是针对一个文件添加、覆盖、删除、创建。。就是不知道有没有减小其大小的函数啊??如果针对mx.aa,只有先删除它,再创建它,并写入10K左右的数据,那么windows中,txt、word、excel又是采用什么方式来减小该文件大小的呢??难道它们也是先把原来的删除,再新建一个吗??我认为word、excel肯定不是采用先删除再创建这种几乎"愚昧"的方式来减小文件大小的。这其中可能有很多文件的基本原理是我所不知道的,恳请各位高人指点一二啊!!!