C#中的文件流学习笔记第一篇

 前言:这篇博客我主要说一下C#中文件流的使用规则,也是从最基础上面去说,也相信我们大家只要是干Web行业的这些知识点肯定能用上,其中介绍几个操作文件流的类,Path类,FileStream类,Read和Write方法的使用

  1. Path

(1) 文件路径有什么特征?

            1)[根目录:\]文件夹\文件名.后缀名

(2)合并路径   Combine

      string p4 = Path.Combine(@"c:\123a\abc\", "白天不懂夜的黑.mp3");

       string p5 = Path.Combine(@"c:\123a\abc", "白天不懂夜的黑.mp3");

(3)获得文件夹的路径  GetDirectoryName

            string p2 = Path.GetDirectoryName(path);

(4)得到全路径 GetFullPath

            string full = Path.GetFullPath("1.txt");

(5)得到后缀名 GetExtension

            string p3 = Path.GetExtension(path);

(6)得到文件名 GetFileName

            string p6 = Path.GetFileName(path);

(7)更改文件后缀名 ChangeExtension

            string path = @"c:\HYL\CS\File\Exise.avi";

            string p1= Path.ChangeExtension(path, "rmvb");

(8)返回临时文件夹   GetTempPath

            string s= Path.GetTempPath();

2. FileStream(文件流),专门将文件以字节流的形式进行处理

(1)父类Stream(流)

     (2)使用文件流,无非就是读取和写入文件

            ->读取文件,就必须想办法打开文件,使用构造方法

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static void Main(string[] args)
 
{
 
                          using (FileStream fileRead = new FileStream(@"F:\heima\practice\总复习\文件流的读取\bin\Debug\SqlHelper.txt", FileMode.Open, FileAccess.Read))
 
         {
 
                    int num;
 
                    while ((num = fileRead.ReadByte()) != -1)
 
                    {
 
                            Console.Write((char)num);
 
                     }
 
                    Console.ReadKey();
 
        }
 
 }

     (3)使用Writer创建文件并且写入信息: 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static void Main(string[] args)
 
{
 
            using (FileStream fileWriter = new FileStream("file.txt", FileMode.Create, FileAccess.Write))
 
            {
 
                Console.WriteLine("请输入信息");
 
                string str = Console.ReadLine();
 
                byte[] bs = Encoding.Default.GetBytes(str);
 
                for (int i = 0; i < bs.Length; i++)
 
                {
 
                    fileWriter.WriteByte(bs[i]);
 
                }
 
            }
}

     (4)自己手动书写一个ACSII码表,不需要百度了,只要我们程序员有计算机

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static void Main(string[] args)
 
{
 
            List<string> list = new List<string>();
 
            list.Add("<body>");
 
            for (int i = 0; i < 128; i++)
 
            {
 
                list.Add(string.Format("子符  <font size=\"7\" color=\"red\">{0}</font>  的ASCII码为  <font size=\"7\" color=\"red\">{1}</font>  <br/>", (char)i, i));
 
            }
 
            list.Add("</body>");
 
            File.WriteAllLines("ASCII.html", list.ToArray(), Encoding.Default);
 
}

      

  1. FileStream

    (1) ReadByte() 读取一个字节,返回对应的直接表示数字的十进制形式

    (2)WriteByte() 可以写一个字节

    (3)复制文件,对文件加密,解密

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static void Main(string[] args)
 
       {
 
           //对文件进行一个简单加密
 
           //using (FileStream fileRead = new FileStream("梦想的力量.mp3", FileMode.Open, FileAccess.Read))
 
           //{
 
           //    using (FileStream fileWrite = new FileStream("梦想.mp3", FileMode.Create, FileAccess.Write))
 
           //    {
 
           //        int num = -1;
 
           //        while ((num = fileRead.ReadByte()) != -1)
 
           //        {
 
           //            num++;
 
           //            fileWrite.WriteByte((byte)num);
 
           //        }
 
           //        Console.WriteLine("OK");
 
           //    }
 
           //}
 
           //对上面加密的文件进行解密
 
           using (FileStream fileRead = new FileStream("梦想.mp3", FileMode.Open, FileAccess.Read))
 
     {
 
               using (FileStream fileWrite = new FileStream("梦想_解密.mp3", FileMode.Create, FileAccess.Write))
 
               {
 
                   int num = -1;
 
                   while ((num = fileRead.ReadByte()) != -1)
 
                   {
 
                       num--;
 
                       fileWrite.WriteByte((byte)num);
 
                   }
 
                   Console.WriteLine("OK");
 
               }
 
           }
 
}
  1. Read和Write的使用

(1) Read(存放数据的byte数组,从数组的第一号位置开始放数据,取出多少数据)

(2)一般情况使用的时候 Read(数组名,0,数组名.Length);

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
static void Main(string[] args)
 
{
 
            //读取文件流
 
            //byte[] bs=new byte[10];
 
            //using (FileStream fileRead = new FileStream("file.txt", FileMode.Open, FileAccess.Read))
 
            //{
 
            //    //Read(存放数据的byte数组,从数组的第一号位置开始放数据,取出多少数据)
 
            //    //一般情况使用的时候 Read(数组名,0,数组名.Length);
 
            //    int count = 0;
 
            //    while ((count = fileRead.Read(bs, 0, bs.Length))>0)
 
            //    {
 
            //        for (int i = 0; i < count; i++)
 
            //        {
 
            //            Console.WriteLine((char)bs[i]);
 
            //        }
 
            //    }
 
            //}
 
            //写流
 
            using(FileStream fileWrite=new FileStream("file.txt",FileMode.Create,FileAccess.Write))
 
            {
 
                byte[] bs = { 0, 97, 98, 99, 48, 49 };
 
                fileWrite.Write(bs, 1, bs.Length - 1);
 
            }
 
}

(3)使用Write和Read复制文件

            1)语法实现

                   using(fileRead)

                   {

                          using(fileWrite)

                          {

                                 byte[] bs=new byte[10*1024*1024];

                                 int count=0;

                                 while((count=fileRead.Read(bs,0,bs.Length))>0)

                                 {

                                        fileWrite.Write(bs,0,count);

                                 }

                          }

                   }

  1. 使用命令行参数控制程序,实现控制台程序的模仿copy

(1) 首先新建一个控制台应用程序,起名随便,然后写入如下代码:

(2)然后运行程序,找到Debug文件夹下面的exe文件,复制一个备份,起名为hylcopy.exe

(3)将这个文件复制到C:\Windows这个目录下面,然后启动cmd命令

(4)输入的信息如图所示:

    

下篇博客再说一下一些其他的流文件,读写流StreamReader和StreamWriter方法,还有File类和Directory类。

 

posted @ 2012-10-09 09:25  超级塞亚人  阅读(163)  评论(0)    收藏  举报