.net------文件和流I/O

文件和流I/O

  • 前言
  • 文件和流操作
    • 文件
  • 磁盘、目录、文件的基本操作
    • 磁盘的基本操作
    • 目录的基本操作
    • 文件的基本操作
  • 文本文件的读取和写入
    • StreamReader类和StreamWriter类分别以一种特定的编码从字节流中读取字符和向流中写入字符
  • 二进制文件的读取和写入
    • 二进制文件的读取和写入
  • 随机文件访问随机文件访问
    • 通用I/O流类

前言

文件和流操作

磁盘、目录、文件的基本操作

文本文件的读取和写入

二进制文件的读取和写入

随机文件访问

文件和流操作

文件

  • 数据的集合,一般保存在磁盘或其他存储介质上
  • 文件I/O(数据的输入/输出)通过流(Stream)来实现

流提供一种向后备存储写入字节和从后备存储读取字节的方式
对于流有5种基本的操作:
打开
读取
写入
改变当前位置
关闭

磁盘、目录、文件的基本操作

磁盘的基本操作

DriveInfo类提供方法和属性以查询驱动器信息
确定可用的驱动器及其类型、驱动器的容量和可用空闲空间等

DriveInfo[] allDrives = DriveInfo. GetDrives();
Console.WriteLine("驱动器 {0}", d.Name); 
Console.WriteLine("  类型: {0}", d.DriveType);
if (d.IsReady == true)
{ 
Console.WriteLine("  卷标: {0}", d.VolumeLabel);
Console.WriteLine("  文件系统: {0}", d.DriveFormat);
Console.WriteLine(" 当前用户可用空间: {0, 15}字节", d.AvailableFreeSpace);
Console.WriteLine("  可用空间:         {0, 15}字节", d.TotalFreeSpace);
Console.WriteLine("  磁盘总大小:       {0, 15}字节", d.TotalSize); 
}

目录的基本操作

Directory类和DirectoryInfo类提供用于目录基本操作的方法:
创建、复制、移动、重命名和删除目录
获取和设置目录的创建、访问及写入的时间戳信息等

Directory所有方法都是静态的
DirectoryInfo类提供实例方法

判断目录是否存在:bool b1 = Directory.Exsits(@”c:\src”); 
DirectoryInfo di = new DirectoryInfo (@”c:\src”);  bool b2 = di.Exists;

创建目录:Directory di2 = Directory.CreateDirectory(@”c:\src”); 
删除目录:Directory. Delete(path2, true);
移动目录:Directory. Move(@”c:\src”, @”c:\src1”);
获取目录中子目录/文件:
string[] sdirs1 = Directory. GetDirectories(path1);

文件的基本操作

File类(静态方法)和FileInfo类(提供实例方法)提供用于文件基本操作的方法

创建、复制、移动、重命名和删除文件
打开文件,读取文件内容和追加内容到文件
获取和设置文件的创建、访问及写入的时间戳信息等

判断文件是否存在:bool b1 = File.Exsits(@”c:\src\test.txt”); 
FileInfo fi = new FileInfo (@”c:\src\test.txt”);  bool b2 = fi.Exists;

创建文件/打开文件:Create/Open/CreateText
删除文件:File. Delete(path);
复制文件:File. Copy(@”c:\src\test.txt”, @”c:\src\test1.txt”);
移动文件:File. Move(@”c:\src\test.txt”, @”c:\src\test1.txt”);

文本文件的读取和写入

StreamReader类和StreamWriter类分别以一种特定的编码从字节流中读取字符和向流中写入字符

1.创建StreamWriter对象(打开文本文件)
2.写入字符数据到文本文件
3.关闭流(关闭文件)

1.创建StreamReader对象(打开文本文件)
2.从打开的文本文件中读取字符数据
3.关闭流(关闭文件)

private const string FILE_NAME = @"c:\temp\TestFile.txt";
//创建StreamWriter实例以在文件中添加文本
using (StreamWriter sw = new StreamWriter(FILE_NAME))
{ //在文件中添加文本
            sw.Write("文本文件"); sw.WriteLine("的写入/读取示例:");
            sw.WriteLine("----------------------------------");
            sw.WriteLine("写入整数 {0} 或浮点数 {1}", 1, 4.2);
            bool b = false; char grade = 'A'; string s = "Multiple Data Type!";
            sw.WriteLine("写入Boolean值、字符、字符串、日期:");
            sw.WriteLine(b); sw.WriteLine(grade); sw.WriteLine(s); 
            sw.Write("当前日期为:"); sw.WriteLine(DateTime.Now);
}
        private const string FILE_NAME = @"c:\temp\TestFile.txt";
        public static void Main(String[] args)
        {
           try
           { //创建StreamReader实例以从文本文件中读取内容.
             using (StreamReader sr = new StreamReader(FILE_NAME))
             {
               String line;
               //读取文本文件每一行的内容,直至文件结束
                while ((line = sr.ReadLine()) != null){ Console.WriteLine(line); }
             }
           }
           catch (Exception e) { Console.WriteLine(e.Message); } // 异常处理

二进制文件的读取和写入

二进制文件的读取和写入

  • BinaryReader类和BinaryWriter类在 Streams 中读取和写入编码的字符串和基元数据类型

  • 创建BinaryWriter对象(打开二进制文件)
    FileStream fs = File.Open(@”Test.dat”, FileMode.Open);
    BinaryWriter bw = new BinaryWriter(fs);

  • 写入二进制数据到文本文件

  • 关闭流(关闭文件)
    ……

随机文件访问随机文件访问

  • FileStream类支持通过其Seek方法随机访问文件

  • Seek通过字节偏移量将读写位置移动到文件中任意位置

  • SeekOrigin.Begin

  • SeekOrigin.Current

  • SeekOrigin.End

  • fs.Seek(0,SeekOrigin.Begin)

通用I/O流类

  • BufferedStream 是向另一个 Stream(例如 NetworkStream)添加缓冲的 Stream

  • CryptoStream 将数据流链接到加密转换

  • MemoryStream 是一个非缓冲的流,可以在内存中直接访问它的封装数据。该流没有后备存储,可用作临时缓冲区

  • NetworkStream 表示网络连接上的 Stream

你可能感兴趣的:(.net,.net,c#,java)