zoukankan      html  css  js  c++  java
  • C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)

    文件流
    FileStream  可读可写  大文件  释放
    StreamReader 读取   释放
    StreamWriter 写入   释放
    using 中释放
    File 可读可写  小文件 操作文件,静态类,对文件整体操作。拷贝、删除、剪切等。


    Path类 针对字符串进行操作

    文件操作

    重点讲解FileStream、StreamReader、StreamWriter、File、Directory、Path这几个类。
    FileStream,通过大文件拷贝的案例。

    string str = "今天明天后天";
                //字符串转字节数组
                byte[] bytes = System.Text.Encoding.UTF8.GetBytes(str);
                //字节数组转字符串
                string newStr = System.Text.Encoding.UTF8.GetString(bytes);
    ===============================================
    //文件流的写
                //创建文件流
                FileStream fs = new FileStream("fist.txt", FileMode.Create, FileAccess.Write);
                //写入内容
                string msg = “锄禾日当午,地雷埋下土,老马走过去,炸成二百五";
                byte[] bytes = System.Text.Encoding.UTF8.GetBytes(msg);
                fs.Write(bytes,0,bytes.Length);
                //清空缓冲区,关闭文件流,释放资源
                fs.Flush();
                fs.Close();
                fs.Dispose();
                Console.WriteLine("哦买雷电嘎嘎闹,小杨太帅了!!!");
    ===========================================================
    using (FileStream fs=new FileStream("fist.txt", FileMode.Open, FileAccess.Read))
                {
                    byte[]bytes=new byte[fs.Length];
                    fs.Read(bytes,0,bytes.Length);
                    string msg = System.Text.Encoding.UTF8.GetString(bytes);
                    Console.WriteLine(msg);
                }
    =========================================================复制文件

                using (FileStream fsRead=new FileStream(@"E:搜狗下载 etMVC第一天.zip", FileMode.Open,FileAccess.Read))
                {
                    //写的流
                    using (FileStream fsWrite=new FileStream(@"E:搜狗下载1.zip", FileMode.Create,FileAccess.Write))
                    {
                        //每次读取的大小是5M
                        byte[] buffer=new byte[1024*1024*5];
                        //实际(真正读取到的大小)
                        int r = fsRead.Read(buffer,0, buffer.Length);
                        while (r>0)
                        {
                            //写入
                            fsWrite.Write(buffer, 0, r);
                            Console.WriteLine("0.0");
                            //再读取
                            r = fsRead.Read(buffer,0,r);
                        }
                    }
                }


    ===========================================================
     using (StreamReader sr=new StreamReader("",Encoding.Default))
                {
                    while (sr.EndOfStream)
                    {
                        Console.WriteLine(sr.ReadLine());
                    }
                    string line = null;
                    while ((line=sr.ReadLine())!=null)
                    {
                        Console.WriteLine(line);
                    }
                }


    ========================================================
     using (StreamWriter sw=new StreamWriter("",true,Encoding.UTF8))
                {
                    for (int i = 0; i < 100; i++)
                    {
                        sw.WriteLine(i);
                    }
                }


    ===============================================工资翻倍案例

    马大哈|6000
    宋江|17400
    马大姐|8000
    宋子文|16400    //文本文件
                using (StreamReader reader=new StreamReader("gz.txt",Encoding.Default))
                {
                    using (StreamWriter writer=new StreamWriter("gz1.txt",false,Encoding.Default))
                    {
                        string line;
                        while ((line = reader.ReadLine())!=null)
                        {
                            //把每一行的|切掉
                            string[] salary = line.Split(new char[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
                            string txt = string.Format("{0}|{1}", salary[0], Convert.ToInt32(salary[1])*2);


                            writer.WriteLine(txt);
                        }
                    }
                }
                  
               Console.ReadKey();

    File、Directory、Path

    Path//对文件或目录的路径进行操作(很方便)【字符串】
    string ChangeExtension(string path, string extension) (*)
    修改文件的后缀,“修改”支持字符串层面的,没有真的给文件改名
    string s = Path.ChangeExtension(@"C: empF3.png", "jpg")
    string Combine(string path1, string path2)
    将两个路径合成一个路径,比用+好,可以方便解决不加斜线的问题,自动处理路径分隔符的问题
    string s = Path.Combine(@"c: emp","a.jpg") 
    string GetDirectoryName(string path) (*)
    得到文件的路径名。Path.GetDirectoryName(@"c: empa.jpg")
    string GetExtension(string path) 得到文件的扩展名
    string GetFileName(string path) 得到文件路径的文件名部分
    string GetFileNameWithoutExtension(string path) 得到去除扩展名的文件名
    string GetFullPath(string path) 得到文件的全路径。可以根据相对路径获得绝对路径。
    string GetTempFileName()  得到一个唯一的临时文件名(*)
    string GetTempPath() 得到临时文件夹的路径(*)


    Directory //操作目录(文件夹),静态类。

    void Delete(string path, bool recursive)     删除目录, recursive表示是否递归删除,如果recursive为false则只能删除空目录
    bool Exists(string path)      判断目录是否存在
    string[] GetDirectories(string path)  得到一个目录下的子目录
    string[] GetDirectories(string path, string searchPattern, SearchOption searchOption)    通配符查找目录下的子目录,可以搜索到隐藏文件。 
    static string[] GetFiles(string path)  得到一个目录下的文件
    string[] GetFiles(string path, string searchPattern, SearchOption searchOption)   通配符查找目录下的文件
    DirectoryInfo GetParent(string path)  得到目录的父目录
    move()  //移动、剪切。只能在同一个磁盘中。目录没有Copy方法。可以使用Move()方法实现重命名。
    create()


  • 相关阅读:
    浅谈Huffman树
    CF884D:Boxes And Balls
    MySQL单表查询(重要)
    MySQL字段完整性约束(重要)
    MySQL数据类型(重要)
    数据库基本操作
    MySQL权限管理
    MySQL存储引擎概述
    数据库基础
    并发编程小结
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/5193692.html
Copyright © 2011-2022 走看看