C# 文件操作复习

一、文件操作类

        文件操作主要有以下几个类:
        FileInfo类、Directory类、DirectoryInfo类、File类、FileStream类、StreamReader类、StreamWriter类。

        File类和Directory类是静态类,直接 类.属性名/方法名。通过文件流读写文件(StreamReader、StreamWriter)一般适用于多种编码。读写流使用过之后需要关闭

二、文件操作类的基本操作

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

namespace File_Control
{
    class Example
    {
        static void Main(string[] args)
        {
            //FileInfo_Example.Example();
            //DirectoryInfo_Example.Example();
            //File_Example.Example();
            //FileStream_Example.Example();
            //Stream_Reader_Writer.Example();

            Directory_Example.Example();

            Console.Read();
        }
    }


    #region 文件读写流
    public class Stream_Reader_Writer
    {
        public static void Example()
        {
            //文件读取流,勿需考虑字节编码
            //StreamReader reader = new StreamReader("TextFile1.txt");

            //while (true)
            //{
            //    int m = reader.Read();
            //    if (m == -1)
            //        break;
            //    Console.Write((char)m);
            //}

            //while (true)
            //{
            //    string str = reader.ReadLine();
            //    if (str == null)
            //        break;
            //    Console.WriteLine(str);
            //}

            //Console.WriteLine(reader.ReadToEnd()); 
            //reader.Close();


            StreamWriter writer = new StreamWriter("jovi.txt");

            //int m = Console.Read();
            //writer.Write((char)m);

            while (true)
            {
                string ss = Console.ReadLine();
                if (ss == "end")
                {
                    Console.WriteLine("跳出循环");
                    break;
                }
                writer.WriteLine(ss);
            }
	        writer.Close();
        }
    }
    #endregion

    public class FileStream_Example
    {
        public static void Example()
        {
            /*
            //1.新建文件流
            FileStream stream = new FileStream("pink-hair.jpeg", FileMode.Open);

            //2.设置文件存储
            byte[] bt = new byte[1024];

            //当超出数组长度时,循环读取
            while (true)
            {
                //3.写入文件
                int length = stream.Read(bt, 0, bt.Length);
                if (length == 0)
                {
                    Console.WriteLine("查询结束");
                    break;
                }
                for (int i = 0; i < length; i++)
                {
                    Console.Write(bt[i] + " ");
                }
            }
            */

            FileStream readStream = new FileStream("pink-hair.jpeg", FileMode.Open);
            FileStream writeStream = new FileStream("uu.jpeg", FileMode.Create);

            byte[] bt = new byte[1024];

            while (true)
            {
                int length = readStream.Read(bt, 0, bt.Length);
                if (length == 0)
                {
                    Console.WriteLine("读取结束");
                    break;
                }
                //for (int i = 0; i < length; i++)
                //{
                //    writeStream.WriteByte(bt[i]);
                //}
                writeStream.Write(bt, 0, bt.Length);
            }

            readStream.Close();
            writeStream.Close();
        }
    }

    public class File_Example
    {
        public static void Example()
        {
            //向文件中添加指定的字符串,如果文件不存在,则新建文件,不覆盖文件中的数据
            //File.AppendAllText("Word.txt", "今天也要元气满满哦\r\n今天也要元气满满哦\r\n今天也要元气满满哦\r\n今天也要元气满满哦\r\n");

            //文件不存在创建文件
            //File.AppendText("ddd.txt");

            //将源文件复制到目标文件,同一文件夹,不覆盖同名文件
            //File.Copy("Word.txt", "Word1.txt");
            //File.Copy("shiina-pink-hair.jpeg", "pink-hair.jpeg");

            //Console.WriteLine(File.Exists("pink-hair.jpeg"));

            //移动文件,不保存原文件
            //File.Move("TextFile1.txt", "POLO.txt");

            //读取文件的所有行
            //string str = File.ReadAllText("TextFile1.txt");
            //Console.WriteLine(str);

            //每一行文本读取成一个字符串,最后组成一个字符串的数组
            //string[] str= File.ReadAllLines("TextFile1.txt");
            //foreach (var item in str)
            //{
            //    Console.WriteLine(item);
            //}

            //byte[] bt = File.ReadAllBytes("pink-hair.jpeg");
            //foreach (var item in bt)
            //{
            //    Console.Write(item.ToString());
            //}

            //按行写入
            //File.WriteAllLines("TextFile2.txt", new string[] { "今天也要元气满满哦", "今天也要元气满满哦", "今天也要元气满满哦" });

            //File.WriteAllText("mi.txt", "今天也要元气满满哦\r\n今天也要元气满满哦\r\n今天也要元气满满哦");

            //获取字节,然后写入,相当于复制文件
            byte[] bt = File.ReadAllBytes("pink-hair.jpeg");
            File.WriteAllBytes("dear.jpeg", bt);
        }
    }

    public class Directory_Example
    {
        public static void Example()
        {
            Directory.CreateDirectory("OOP");
            //删除空目录,如果目录中有内容,会抛出异常
            Directory.Delete("OOP");

            Console.WriteLine(Directory.Exists("OOP"));
        }
    }

    public class DirectoryInfo_Example
    {
        public static void Example()
        {
            DirectoryInfo dirInfo = new DirectoryInfo(@"D:\C#\File_Control\File_Control\bin\Debug");

            Console.WriteLine("文件夹是否存在: " + dirInfo.Exists);

            Console.WriteLine("文件夹创建时间: " + dirInfo.CreationTime);
            Console.WriteLine("文件夹完整目录: " + dirInfo.FullName);
            Console.WriteLine("文件夹名称: " + dirInfo.Name);
            //目录根部分即该盘符
            Console.WriteLine("目录的根部分: " + dirInfo.Root);
            Console.WriteLine("子目录的父目录: " + dirInfo.Parent);

            //创建子目录
            dirInfo.CreateSubdirectory("Demo");
        }
    }

    public class FileInfo_Example
    {
        public static void Example()
        {
            //相对位置
            FileInfo fileInfo = new FileInfo("TextFile1.txt");
            //绝对位置
            //FileInfo fileInfo = new FileInfo(@"D:\C#\File_Control\File_Control\TextFile1.txt");

            /*
             * 1.文件是否存在
             *      Exists属性
             * 2.
             * 
             * **/
            Console.WriteLine("文件是否存在: " + fileInfo.Exists);

            //获取文件名 - 该文件的文件名加扩展名
            Console.WriteLine("文件名: " + fileInfo.Name);

            //移动文件到指定位置,默认是本目录,提供要指定新文件名的选项 - 即修改文件名
            //fileInfo.MoveTo("../File.txt");

            //当前文件的大小,以字节为单位。
            Console.WriteLine("文件的大小: " + fileInfo.Length);

            //确定当前文件是否是只读的值
            //Console.WriteLine("是否只读: " + fileInfo.IsReadOnly);

            fileInfo.Delete();

            Console.WriteLine("创建时间: " + fileInfo.CreationTime);
            fileInfo.Refresh();
            Console.WriteLine("文件是否存在: " + fileInfo.Exists);

            //文件的扩展名 - .后缀
            Console.WriteLine("文件的扩展名: " + fileInfo.Extension);
            //父目录实例和完整路径字符串相同
            Console.WriteLine("父目录的实例: " + fileInfo.Directory);
            Console.WriteLine("目录的完整路径的字符串: " + fileInfo.DirectoryName);
            Console.WriteLine("文件的完整目录: " + fileInfo.FullName);

            Console.WriteLine("获取当前文件或目录的特性: " + fileInfo.Attributes);

            //复制文件,不覆盖现有文件
            //fileInfo.CopyTo("polo.txt");

            //FileInfo fileInfo = new FileInfo("MyLove.txt");
            //if (!fileInfo.Exists)
            //{
            //    fileInfo.Create();
            //}

            当创建新文件时,需修改对象的状态。
            //fileInfo.Refresh();

            //Console.WriteLine("是否存在: " + fileInfo.Exists);

            //StreamReader reader = fileInfo.OpenText();
            //while (reader.Read()>=0)
            //{
            //Console.WriteLine(reader.ReadToEnd());
            //}
            //Console.WriteLine(fileInfo.DirectoryName);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值