C#中的文件流StreamReader、StreamWriter和File类等操作学习

时间:2022-11-15 作者:admin

C#中的文件流StreamReader、StreamWriter和File类等操作学习

文件流分析测试工具(IOzone Filesystem Benchmark)3.420 官方版 类型:编程辅助大小:808KB语言:英文 评分:3.3 标签: 立即下载

 

  这篇主要介绍几个操作文件流的类,读写类StreamReader,StreamWriter和File类以及Directory类的操作

  FileStream类的控制

  (1) Flush();  清除此流的缓冲区,是为了保护硬盘

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25static void Main(string[] args)

  {

  using (FileStream filewrite = new FileStream("file.txt", FileMode.Create, FileAccess.Write))

  {

  filewrite.WriteByte(101);

  filewrite.WriteByte(101);

  //清除此流的缓冲区

  filewrite.Flush();

  filewrite.WriteByte(101);

  filewrite.WriteByte(101);

  //每次写一个直接就会频繁的操作硬盘,

  }

  }

  (2)Seek(偏移,位置枚举)

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19static void Main(string[] args)

  {

  using (FileStream fileRead = new FileStream("file.txt", FileMode.Open, FileAccess.Read))

  {

  fileRead.Position = 4;

  fileRead.Seek(3, SeekOrigin.Current);

  int n = fileRead.ReadByte();

  Console.WriteLine((char)n);

  }

  其它流

  (1)MemoryStream 内存流

  NetworkStream ns = new NetworkStream();

  (2)NetworkStream 网络流

  MemoryStream ms = new MemoryStream();

  读写流

  (1) StreamReader

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33

  34

  35//读取文件流

  static void Main(string[] args)

  {

  using(FileStream fileRead=new FileStream("成功.txt",FileMode.Open,FileAccess.Read))

  {

  using (StreamReader sr = new StreamReader(fileRead,Encoding.Default))

  {

  //第一种读法

  //string str = sr.ReadLine();

  //while ((str = sr.ReadLine()) != null)

  //{

  //    Console.WriteLine(str);

  //}

  //第二种读法

  Console.WriteLine(sr.ReadToEnd());

  }

  }

  }

  (2)StreamWriter

  static void Main(string[] args)

  {

  using (StreamWriter sw = new StreamWriter("成功.txt"))

  {

  sw.WriteLine();

  }

  }

  File

  (1) File关于文件读取的方法

  1)使用File文件读取流

  //损失性能

  byte[] bs=File.ReadAllBytes("file.txt");

  2)管理文件

  ->创建文件

  File.Create("f:韩迎龙.txt", 10 * 1024 * 1024);

  ->删除文件

  File.Delete("f:韩迎龙.txt");

  ->查文件

  bool isExist = File.Exists("f:韩迎龙.txt");

  Console.WriteLine(isExist);

  (2)FileInfo

  1)创建文件

  FileInfo file = new FileInfo("f:韩迎龙.txt"); //在内存中存在

  file.Create();  //创建文件

  2)设置属性

  file.Attributes = FileAttributes.ReadOnly; //在属性中查看

  (3)Copy方法 复制

  File.Copy("f:韩迎龙.txt", "f:111.txt");

  (4)Move方法 移动

  File.Move("f:韩迎龙.txt", "f:1韩迎龙.txt");

  (5)修改文件的全部名称

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29

  30

  31

  32

  33static void Main(string[] args)

  {

  string[] fnames = Directory.GetFiles("f:1");

  //Array的Sort方法可以对数组进行排序

  Array.Sort(fnames);

  for (int i = 0; i < fnames.Length; i++)

  {

  string temp = fnames[i];

  //获得文件名

  string fileName = Path.GetFileName(temp);

  //获得路径名

  string path = Path.GetDirectoryName(temp);

  //新的文件名

  string newPath = Path.Combine(path, i.ToString(new string('0', fnames.Length.ToString().Length)) + ".txt");

  File.Move(fnames[i], newPath);

  }

  }

C#中的文件流StreamReader、StreamWriter和File类等操作学习

  Directory

  (1) 增

  //创建文件夹

  Directory.CreateDirectory("F:2.exe");

  (2)删

  Directory.Delete("f:1", true); //直接删除,在回收站中再找不到了

  (3)和File的使用基本一样

  (4)得到文件夹下面的子文件夹

  string[] subDir=Directory.GetDirectories("文件夹路径");

  (5)得到文件夹下面的所有子文件

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  29   string[] file= Directory.GetFiles("文件夹路径");

  //先创建几个文件

  string type = "mp3|mp4|doc|rmvb|txt|xls|exe|avi";

  string path = @"F:file";

  if(!Directory.Exists(path))

  {

  Directory.Create(path);

  }

  Random rand=new Random();

  string[] ts=type.Split('|');

  for (int i = 0; i < 100; i++)

  {

  File.Create(Path.Combine(path, Path.ChangeExtension(i.ToString(), ts[rand.Next(ts.Length)])));

  }

  string[] files = Directory.GetFiles(@"F:file", "*.txt");