Asp.Net中用流操作文件

 byte[] bytes = File.ReadAllBytes(@"c:\BorlandDelphi7.zip");
          File.WriteAllBytes(@"c:\a.zip", bytes);

有用过这种方式来读取文件的。

这种方式的弊端在于,先是把文件整个读取出来,放入内存,然后再写入硬盘。如果文件太大,而且内存不够大的话,有可能造成死机现象,而且速度相对来说比较慢。

流操作:

什么是流,通俗来说就是读一点写一点,而且这个一点,是可以控制的,我可以让他一次读取1M或者10M或者100M都可以。

控制读取文件大小 这个就是缓冲区,设置缓冲区不可以太小,当然也不可以太大,适当就好,太小了会频繁读写硬盘,对硬盘损害加大,太大了也会拖慢速度。设置适当就可以。

个人建议8M开始。

 static void Main(string[] args)
        {

            using (FileStream outStream = new FileStream(@"c:\a.zip", FileMode.Create))//通过FileMode.Create标明是写入流
            {
                using (FileStream fs = new FileStream(@"c:\BorlandDelphi7.zip",FileMode.Open))//通过FileMode.Open标明是读取流
                {

                    ////Read返回值表示实际读了多少内容
                    //fs.Read(bytes, 0, bytes.Length);
                    byte[] bytes = new byte[1024 * 1024 * 4];//缓冲区的大小。就是一次读取多少内容
                    //缓冲区太小的话速度慢,伤硬盘
                    //如果Read返回值大于0,说明还没有读完
                    int readBytes;//实际读出的长度

                    //Read和SqlDataReader的Read一样,是每次Read指针后移
                    //错误:int readBytes=fs.Read(....)
                    //while(readBytes>0)
                    //第二个参数offset表示当前位置的偏移量,一般都传0
                    while ((readBytes = fs.Read(bytes, 0, bytes.Length)) > 0)
                    {

                        //因为最后一次可能没有把bytes读慢
                        //所以把实际读取的数量做为第三个参数
                        outStream.Write(bytes, 0, readBytes);
                        //Thread.Sleep(1);//线程挂起时间
                    }
                }

            }           

如果相直观的看到流,可以在读取一个缓冲区大小文件后让线程挂起一下,然后刷新文件夹来查看此时写入的文件的大小的变化。

线程挂起

Thread.Sleep(1);

欢迎加入.net技术交流群

Asp.Net中用流操作文件

时间: 2024-08-27 16:59:52

Asp.Net中用流操作文件的相关文章

关于java io流操作文件探讨

1.任务描述    2.读取一个字符 3.读取整个文件 4.复制文件 5.复制大文件 6.利用字符流解决乱码问题 一.任务描述 大家都知道程序是程序的运行是离不开内存的,但是很多东西并不在程序当中,而程序也需要操作它们.所以就需要一个东西与内存外的资源打交道,我们就把这个东西称为io流.io流分为输出流和输入流,输出流是将内存中的东西输出到内存之外,输入流是将内存之外的东西读取到内存中.一旦有了io流之后,与内存之外的资源打交道就十分方便了.为什么这么说,其实总体上就只需要三步操作,第一步,定位

android IO流操作文件(存储和读取)

存储文件: public class FileOperate extends Activity { private static final String FILENAME = "mydata.txt" ;// 设置文件名称 private static final String DIR = "ljpdata" ; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(s

delphi 基础之三 文件流操作

文件流操作 Delphi操作流文件:什么是流?流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具.在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向.流不但可以处理文件,还可以处理动态内存.网络数据等多种数据形式.如果你对流的操作非常熟练,在程序中利用流的方便性,写起程序会大大提高效率的. 一.Delphi中流的基本概念及函数声明 在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性

java FileStream文件流操作

直接上代码,函数使用说明详见Java API文档 import java.io.*; public class StreamDemo { public static void main(String[] args) { File f=new File("F:\\workspace\\JavaPrj\\test.txt"); FileOutputStream out=null; try { out=new FileOutputStream(f); byte[] b=new String(

在asp.net中用客户端上传控件上传文件( 需要注意的)

在asp.net中使用<inpu nme=“file” type=“file”>客户端控件上传文件, 代码大致如下: for(int i=0; i< Request.Files.Count; i++) //这里就是获取不到file的个数 { if(Request.Files[i].ContentLength > 0) { Response.Write (Request.Files [i].FileName ); } } 在我的页面中,Request.Files.Count怎么弄都是

C++ 文件流操作必知必会

一.文件流操作 1.确定文件打开的模式.可以选的模式主要有: ios::in 为输入(读)而打开一个文件ios::out 为输出(写)而打开文件 ios::ate 初始位置:文件尾 ios::app 所有输出附加在文件末尾 ios::trunc 如果文件已存在则先删除该文件 ios::binary 二进制方式 2.默认情况下是以文本的方式写文件,并且会删除原本文件中的数据,即ios::trunc 3.判断文件是否正常打开.好的文件操作习惯是,每次打开一个文件后,在进行文件写之前要判断文件是否正常

java 学习笔记之 流、文件的操作

ava 学习笔记之 流.文件的操作 对于一些基础的知识,这里不再过多的解释, 简单的文件查询过滤操作 package com.wfu.ch08; import java.io.File; import java.io.FilenameFilter; public class Test1 { public static void main(String[] args) { File file=new File("F:\\2017-2018-1\\javase"); // //获取该目录下

C语言中文件流操作基本函数总结

函数所在头文件:stdio.h 说明:前半部分主要为对各个文件流操作函数的例举,后半部分着重于 上机运行分析.文中部分引用自王桂林老师的C/C++课件. 1.FIELE *fopen(const char*filename,const char *mode) 以mode的方式,打开一个以filename(指针类型)命名的文件, 返回一个指向该文件缓冲区的指针,该指针是后续操作的句柄. 2.int fclose(FILE *stream) fclose()用来关闭先前用fopen()打开的文件.并

JavaI/O:简单的使用DataOutputStream和DataInputStream操作文件流

DataInputStream 是数据输入流.它继承于FilterInputStream.DataInputStream 是用来装饰其它输入流,它"允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型".应用程序可以使用DataOutputStream(数据输出流)写入由DataInputStream(数据输入流)读取的数据. DataOutputStream?是数据输出流.它继承于FilterOutputStream.DataOutputStream?是用来装饰其它