C#知识学习-文件流操作

继承自System.IO

查看文件

FileInfo常用属性

Exists 获取文件是否存在

Name 获取文件名

Directory 获取文件所在路径

Length 获取当前文件的大小

FileInfo常用方法

Delete() 删除文件

CopyTo(文件名,bool) 复制文件到当前目录 并更改文件名 bool值表示是否替换当前文件

Create() 创建文件

MoveTo() 移动文件 也可用于重命名文件

DirectoryInfo常用属性

Exists 获取文件夹是否存在

Name 获取文件夹名称

Parent 获取文件夹父目录

Root 获取文件夹根目录

CreationTime 获取文件夹的创建时间

DirectoryInfo常用方法

CreateSubdirectory("A") 创建子目录

Create() 创建文件夹

代码:

class Program
    {
        static void Main(string[] args)
        {
            //相对路径:找当前文件所在位置
            FileInfo file = new FileInfo("TextFile1.txt");
            //绝对路径:找当前文件的完整路径
            FileInfo file = new FileInfo(@"完整路径\TextFile1.txt");
            Console.WriteLine(file.Exists);//Exists属性 获取文件是否存在
            Console.WriteLine(file.Name);//文件名
            Console.WriteLine(file.Directory);//取得文件所在路径
            Console.WriteLine(file.Length);//获取当前文件的大小 以字节为单位
            file.Delete();//删除文件
            file.CopyTo("Text1");//复制文件到当前目录
            FileInfo file2 = new FileInfo("A.txt");
            if (!file2.Exists)//如果当前文件不存在
            {
                file2.Create();//创建文件
            }
            file2.MoveTo("B.txt");//重命名文件
            DirectoryInfo directory = new DirectoryInfo(@"完整路径\Debug");
            Console.WriteLine(directory.Exists);//文件夹是否存在
            Console.WriteLine(directory.Name);//文件夹名称
            Console.WriteLine(directory.Parent);//文件夹父目录
            Console.WriteLine(directory.Root);//文件夹根目录
            Console.WriteLine(directory.CreationTime);//文件夹的创建时间
            directory.CreateSubdirectory("A");//创建子目录
            DirectoryInfo directory2 = new DirectoryInfo("test");
            if (!directory2.Exists)
            {
                directory2.Create();//创建文件夹
            }
            Console.ReadLine();
        }

使用File读写文件

File.ReadAllLines(文件名) 以行来读取文本文件,返回一个字符串数组

File.ReadAllText(文件名) 直接读取整个文本文件,返回一个字符串

File.ReadAllBytes(文件名) 以字节读取文件,返回一个字节数组

File.WriteAllText(文件名, 字符串) 创建一个新文件 并写入一个字符串

File.WriteAllLines(文件名, 字符串数组) 创建一个新文件 并写入一个字符串数组

File.WriteAllBytes(文件名, 字节数组) 创建一个新文件 并写入一个字节数组

代码:

static void Main(string[] args)
        {
            string[] strArray = File.ReadAllLines("TextFile1.txt");//以行来读取文本文件
            string text = File.ReadAllText("TextFile1.txt");//直接读取整个文本文件
            foreach (var s in strArray)
            {
                Console.WriteLine(s);
            }
            byte[] byteArray = File.ReadAllBytes("000.jpg");//以字节读取文件
            foreach (var b in byteArray)
            {
                Console.WriteLine(b);
            }
            File.WriteAllText("text1.txt", "Hello World");//创建一个新文件 并写入一个字符串
            File.WriteAllLines("text2.txt", new string[] { "aaa", "bbb", "ccc" });//创建一个新文件 并写入一个字符串数组
            File.WriteAllBytes("001.jpg", byteArray);//创建一个新文件 并写入一个字节数组
            Console.WriteLine(text);
            Console.ReadKey();
        }

使用FileStream读写文件(适合读取二进制文件)

FileStream读取

FileStream stream = new FileStream(文件名, FileMode); 

stream.Read(byte[],offset,count); 第一个参数用于传递一个数据容器,第二个参数用于定位在数据容器中读取的位置,第三个参数表示读取数据的长度

stream.Write(byte[],offset,count); 与读取差不多,用于写入数据

代码:

static void Main(string[] args)
        {
            FileStream stream = new FileStream("000.jpg", FileMode.Open);
            byte[] data = new byte[1024];//数据容器
            while (true)
            {
                int length = stream.Read(data, 0, data.Length);
                //将数据从0一直到数据容器的最大长度读取到数据容器中
                //如果一次读取的数据长度超过了数据容器的最大长度,
                //则第二次读取的数据会在上一次读完的长度开始,继续读取剩余的数据
                //直到数据全部读完,如果已经到达数据流的结尾,则返回0
                if (length == 0) break;
                for (int i = 0; i < length; i++)
                {
                    Console.Write(data[i] + " ");
                }
            }

----------------------------------------------------------------------------------------------------------------------

            //使用FileStream完成文件的复制
            //创建一个文件流用于读取
            FileStream readStream = new FileStream("000.jpg", FileMode.Open);
            //创建另一个文件流用于写入新文件
            FileStream writeStream = new FileStream("001.jpg", FileMode.Create);
            while (true)
            {
                int length = readStream.Read(data, 0, data.Length);
                if (length == 0) break;
                else
                {
                    writeStream.Write(data, 0, length);//写入文件流
                }
            }
            writeStream.Close();//关闭文件流
            readStream.Close();
            Console.ReadLine();
        }

使用StreamReader和StreamWriter读写(适合读取文本文件)

StreamReader reader = new StreamReader(文件名);

StreamWriter writer = new StreamWriter(文件名); 如果文件已存在 则覆盖原文件

reader.Read() 读取一个字符 返回类型是int 当读完文件时返回-1

reader.ReadLine() 读取一行字符串

reader.ReadToEnd() 读取到文本结尾

writer.WriteLine(string text) 写入一个字符串并换行

代码:

static void Main(string[] args)
        {
            StreamReader reader = new StreamReader("TextFile1.txt");
            while (true)
            {
                string str = reader.ReadLine();//读取一行字符串
                if (str == null) break;
                Console.WriteLine(str);
            }
            string data = reader.ReadToEnd();//读取到文本的结尾 返回一个字符串
            Console.WriteLine(data);
            while (true)
            {
                int c = reader.Read();
                if (c == -1) break;
                else Console.WriteLine((char)c);
            }
            StreamWriter writer = new StreamWriter("Test.txt");//如果文件已经存在 则会覆盖
            while (true)
            {
                string text = Console.ReadLine();
                if (text == "q") break;
                writer.WriteLine(text);//写入一个字符串并换行
            }
            writer.Close();
            reader.Close();
        }

 

 

 

 

 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值