2.文件的输入与输出

C# I/O类

System.IO:命名空间有各种不同的类,用于执行各种文件操作,如创建和删除文件、读取或写入文件,关闭文件等。下表列出了一些 System.IO 命名空间中常用的非抽象类
BinaryReader:从二进制流读取原始数据
BinaryWriter:以二进制格式写入原始数据
BufferedStream:字节流的临时存储
Directory:有助于操作目录结构
DirectoryInfo:用于对目录执行操作
DriveInfo:提供驱动器的信息
File:有助于处理文件
FileInfo:用于对文件执行操作
FileStream:用于文件中任何位置的读写
MemoryStream:用于随机访问存储在内存中的数据流
Path:对路径信息执行操作
StreamReader:用于从字节流中读取字符
StreamWriter:用于向一个流中写入字符
StringReader:用于读取字符串缓冲区
StringWriter:用于写入字符串缓冲区

使用场景:

FileStream 类(用于大文件读写),类有助于文件的读写与关闭。该类派生自抽象类 Stream

StreamReader 类和StreamWriter 类(用于文本文件的读写,自动转编码格式),StreamReader 类继承自抽象基类 TextReader,表示阅读器读取一系列字符,StreamWriter 类继承自抽象类 TextWriter,表示编写器写入一系列字符

BinaryReader 类和BinaryWriter 类(用于二进制文件的读写),BinaryReader 类用于从文件读取二进制数据。一个 BinaryReader 对象通过向它的构造函数传递 FileStream 对象而被创建,BinaryWriter 类用于向文件写入二进制数据。一个 BinaryWriter 对象通过向它的构造函数传递 FileStream 对象而被创建

DirectoryInfo 类和FileInfo 类(用于对文件进行大量的操作,少量的操作建议用静态类File类),DirectoryInfo 类派生自 FileSystemInfo 类。它提供了各种用于创建、移动、浏览目录和子目录的方法。该类不能被继承,FileInfo 类派生自 FileSystemInfo 类。它提供了用于创建、复制、删除、移动、打开文件的属性和方法,且有助于 FileStream 对象的创建。该类不能被继承

使用场景(代码)如下:

using System;
using System.IO;

namespace _2.文件的输入与输出
{
    /* C# I/O类
     * System.IO 命名空间有各种不同的类,用于执行各种文件操作,如创建和删除文件、读取或写入文件,关闭文件等。下表列出了一些 System.IO 命名空间中常用的非抽象类
     * BinaryReader	从二进制流读取原始数据
     * BinaryWriter	以二进制格式写入原始数据
     * BufferedStream	字节流的临时存储
     * Directory	有助于操作目录结构
     * DirectoryInfo	用于对目录执行操作
     * DriveInfo	提供驱动器的信息
     * File	有助于处理文件
     * FileInfo	用于对文件执行操作
     * FileStream	用于文件中任何位置的读写
     * MemoryStream	用于随机访问存储在内存中的数据流
     * Path	对路径信息执行操作
     * StreamReader	用于从字节流中读取字符
     * StreamWriter	用于向一个流中写入字符
     * StringReader	用于读取字符串缓冲区
     * StringWriter	用于写入字符串缓冲区
     */
    class Program
    {
        static void Main(string[] args)
        {
            #region FileStream 类(用于大文件读写)
            //FileStream 类有助于文件的读写与关闭。该类派生自抽象类 Stream
            //FileStream fs = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);

            //for (var i = 1; i <= 20; i++)
            //{
            //    fs.WriteByte((byte)i);
            //}

            //fs.Position = 0;

            //for (var i = 1; i <= 20; i++)
            //{
            //    Console.Write(fs.ReadByte() + " ");
            //}
            //fs.Close(); 
            #endregion

            #region StreamReader 类和StreamWriter 类(用于文本文件的读写,自动转编码格式)
            // StreamReader 类继承自抽象基类 TextReader,表示阅读器读取一系列字符
            // StreamWriter 类继承自抽象类 TextWriter,表示编写器写入一系列字符

            //int[] bs = new int[] { 21, 22, 23 };
            //using (StreamWriter sw = new StreamWriter("test.dat"))
            //{
            //    foreach (int b in bs)
            //    {
            //        sw.WriteLine(b);
            //    }
            //}
             从文件中读取并显示每行
            //string line = "";
            //using (StreamReader sr = new StreamReader("test.dat"))
            //{
            //    while ((line = sr.ReadLine()) != null)
            //    {
            //        Console.WriteLine(line);
            //    }
            //}
            #endregion

            #region BinaryReader 类和BinaryWriter 类(用于二进制文件的读写)
            //BinaryReader 类用于从文件读取二进制数据。一个 BinaryReader 对象通过向它的构造函数传递 FileStream 对象而被创建
            //BinaryWriter 类用于向文件写入二进制数据。一个 BinaryWriter 对象通过向它的构造函数传递 FileStream 对象而被创建

            //BinaryWriter bw;
            //BinaryReader br;
            //Stream fs;
            //int i = 25;
            //double d = 3.14157;
            //bool b = true;
            //string s = "I am happy";
             创建文件
            //try
            //{
            //    bw = new BinaryWriter(new FileStream("mydata",
            //                    FileMode.Create));
            //}
            //catch (IOException e)
            //{
            //    Console.WriteLine(e.Message + "\n Cannot create file.");
            //    return;
            //}
             写入文件
            //try
            //{
            //    bw.Write(i);
            //    bw.Write(d);
            //    bw.Write(b);
            //    bw.Write(s);
            //}
            //catch (IOException e)
            //{
            //    Console.WriteLine(e.Message + "\n Cannot write to file.");
            //    return;
            //}

            //bw.Close();
             读取文件
            //try
            //{
            //    fs = new FileStream("mydata",
            //                       FileMode.Open);
            //    br = new BinaryReader(fs);
            //}
            //catch (IOException e)
            //{
            //    Console.WriteLine(e.Message + "\n Cannot open file.");
            //    return;
            //}
            //try
            //{
            //    i = br.ReadInt32();
            //    Console.WriteLine("Integer data: {0}", i);
            //    d = br.ReadDouble();
            //    Console.WriteLine("Double data: {0}", d);
            //    b = br.ReadBoolean();
            //    Console.WriteLine("Boolean data: {0}", b);
            //    s = br.ReadString();
            //    Console.WriteLine("String data: {0}", s);
            //    //Console.WriteLine("All data:{0}", br.ReadBytes((int)fs.Length));
            //}
            //catch (IOException e)
            //{
            //    Console.WriteLine(e.Message + "\n Cannot read from file.");
            //    return;
            //}
            //br.Close();
            #endregion

            #region DirectoryInfo 类和FileInfo 类(用于对文件进行大量的操作,少量的操作建议用静态类File类)
            //DirectoryInfo 类派生自 FileSystemInfo 类。它提供了各种用于创建、移动、浏览目录和子目录的方法。该类不能被继承
            //FileInfo 类派生自 FileSystemInfo 类。它提供了用于创建、复制、删除、移动、打开文件的属性和方法,且有助于 FileStream 对象的创建。该类不能被继承

            //创建一个DirectoryInfo 对象
            DirectoryInfo directoryInfo = new DirectoryInfo(@"E:\c#基础代码\Csharp基础进阶");

            //获取目录中的文件以及它们的名称和大小
            FileInfo[] f = directoryInfo.GetFiles();
            foreach(FileInfo file in f)
            {
                Console.WriteLine("File Name:{0} Size:{1}", file.Name, file.Length);
            }

            #endregion
            Console.ReadKey();
        }
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值