.Net学习笔记----2015-06-25(文件流FileStream)

文件流

将创建文件流对象的过程写在using当中,会自动的帮助我们释放流所占用的资源

            //FileStream  操作字节的
            //StreamReader和StreamWriter 操作字符的
            FileStream fsRead = new FileStream(@"C:\Users\Administrator\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Read);
            byte[] buffer = new byte[1024 * 1024 * 5];
            //3.8M 5M
            //返回本次实际读取到的有效字节数
            int r = fsRead.Read(buffer, 0, buffer.Length);
            //将字节数组中每一个元素按照指定的编码格式解码成字符串
            string s = Encoding.UTF8.GetString(buffer, 0, r);
            //关闭流
            fsRead.Close();
            //释放流所占用的资源
            fsRead.Dispose();
            Console.WriteLine(s);
            Console.ReadKey();

            //使用FileStream来写入数据
            //using (FileStream fsWrite = new FileStream(@"C:\Users\Administrator\Desktop\new.txt", FileMode.OpenOrCreate, FileAccess.Write))
            //{
            //    string str = "看我有木有把你覆盖掉";
            //    byte[] buffer = Encoding.UTF8.GetBytes(str);
            //    fsWrite.Write(buffer, 0, buffer.Length);
            //}
            //Console.WriteLine("OK");
            //Console.ReadKey();

使用文件流来实现多媒体文件的复制

思路:

先将要复制的多媒体文件读取出来,然后再写入到你指定的位置

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _08_使用文件流来实现多媒体文件的复制
{
    class Program
    {
        static void Main(string[] args)
        {
            string source = @"D:\Csharp教程\09-面向对象多态\2、File类的读写文件.avi";
            string target = @"C:\Users\Administrator\Desktop\File类的.avi";
            CopyFile(source, target);
            Console.WriteLine("复制成功");
            Console.ReadKey();
        }

        public static void CopyFile(string soucre, string target)
        {
            //1、创建一个负责读取文件的流
            using (FileStream fsRead = new FileStream(soucre, FileMode.Open, FileAccess.Read))
            {
                //2、创建一个负责写入的流
                using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
                {
                    byte[] buffer = new byte[1024 * 1024 * 5];
                    //因为文件可能会比较大,所以在读取时候,通过循环去读取
                    while (true)
                    {
                        //返回本次读取实际读取到的字节数
                        int r = fsRead.Read(buffer, 0, buffer.Length);
                        //如果返回一个0,意味着什么也没读取到,读取完了
                        if (r == 0)
                        {
                            break;
                        }
                        fsWrite.Write(buffer, 0, r);
                    }

                }
            }
        }

    }
}
时间: 2024-08-03 02:41:39

.Net学习笔记----2015-06-25(文件流FileStream)的相关文章

Unix文件系统学习笔记之二: 文件描述符、inode和打开文件表

Unix文件系统学习笔记之二: 文件描述符.inode和打开文件表 系统盘上数据的布局 文件系统无非是关于数据在磁盘上的组织以及存储空间管理的,为此,首先需要知道磁盘上数据的总体布局方式.以Unix为例,最重要的一张表如下: Unix 进程管理中和用户文件.io 最相关的数据结构:usr 数据结构 The procstructure does not record information related to file access.  However the userstructure con

Lua学习笔记9:多文件

一 终端中执行多个文件:-l 加入在文件一中定义了一个变量,在另一文件中输出这个变量,代码如下: --file1.lua num = 100 --file2.lua print(num) 终端输入(注意:不是lua命令行): lua -lfile1 -lfile2 注意:不要加上文件后缀名.lua 二 命令行中加载文件 --lib.lua function norm(x, y) local n2 = x^2 + y^2 return math.sqrt(n2) end function twic

【改自lg2lh】EZ-USB 68013 学习笔记--设备信息安装文件CyUSB.inf详细说明

首先要明白一个INF文件的基本结构:INF由节组成,即一个个段组成.每个段的功能不一样.(大部分书上把这个段叫作"节") [Version]段:主要用说明版本信息的. [Strings]段:字符串信息,用于常量定义,用于显示.凡在其他段中出现的%XXXX%(就是两个百分号夹着一组字母),则对应的就会在Strings段里对应着它的一个字符串. [SourceDisksNames]段:定义安装源文件所在磁盘,一般为1,表示在第一个磁盘.此节可无. [SourceDiskFiles]段:驱动

【Ext.Net学习笔记】06:Ext.Net GridPanel的用法(GridPanel 折叠/展开行、GridPanel Selection、 可编辑的GridPanel)

GridPanel 折叠/展开行 Ext.Net GridPanel的行支持折叠/展开功能,这个功能个人觉得还说很有用处的,尤其是数据中包含图片等内容的时候. 下面来看看效果: 使用行折叠/展开功能之后,在Ext.Net GridPanel的行头会出现一个展开图标,点击图标以后能够将这一行展开: 使用XTemplate实现行折叠/展开 这是最简单的一种实现,在上一篇文章:[Ext.Net学习笔记]05:Ext.Net GridPanel的用法(包含Filter.Sorter.Grouping.汇

Linux 程序设计学习笔记----动手编写makefile文件

Befroe Beginning. 之前定了暑假的plan ,关于Linux的书籍现在在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级环境编程. 现在开始关于Linux程序设计的第一篇学习笔记. 本来打算把名字写成教程,不过觉得自己完全是新手在自学,还是写学习笔记比较负责和适合. 希望可以一起学习进步. 引入 首先我们假设这样一个场景.我们有一个程序包含了三个文件,分别是源码文件main_plus,c和function_plus.c以及头文件mydefine_p

《鸟哥的Linux私房菜》学习笔记(1)——文件与目录

在Linux中,任何设备都是文件,不仅如此,连数据通信的接口也有专门的文件负责.可以说,一切皆文件,目录也是一种文件,是路径映射.因此,文件系统是Linux的基础. 一.文件与目录管理命令 1.ls(list)--查看文件与目录命令 在linux中,该命令可能是最多被执行的,因为我们随时要知道文件或者目录的相关信息.ls命令默认显示非隐藏文件的文件名(以文件名进行排序)以及文件名代表的颜色. 命令格式:ls [选项] [目录名] 常用参数: -l(long):列出长字符串,包含文件的属性与权限等

linux学习笔记(1)-文件处理相关命令

列出文件和目录 ls (list) #ls 在终端里键入ls,并回车,就会列出当前目录的文件和目录,但是不包括隐藏文件和目录 #ls -a 列出当前目录的所有文件 #ls -al 列出当前目的所有文件的详细信息 创建目录 mkdir (make directory) #mkdir test 在当前目录创建test的目录 显示当前目录 pwd (print working directory) #pwd 打印当前目录 切换到其他目录 cd (change directory) #cd 目录名 复制

数据库学习笔记3 基本的查询流 2 select lastname+','+firstname as fullname order by lastname+','+firstname len() left() stuff() percent , select top(3) with ties

order by子句对查询结果集进行排序 多列和拼接 多列的方式就很简单了 select firstname,lastname from person.person order by lastname,firstname; 这句话表示根据lastname和firstname两列进行排序,并且是先按照lastname进行排序如果有相同的值就按照firstname进行排序. 拼接很有意思,可以写成这个样子 select lastname+','+firstname as fullname from

文件流FileStream

FileStream对象表示在磁盘或网络路径上指向文件的流 使用 FileStream 类对文件系统上的文件进行读取.写入.打开和关闭操作 FileStream 对输入输出进行缓冲,从而提高性能 为什么不用File.ReadAllText()? 好处之一就是:对于大文件来说,FileStream可以对文件采取分段读取,即每次只读取一部分到内存. using System; using System.Collections.Generic; using System.ComponentModel;