麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

使用C#讀物二進制文件的方法(源代碼)

2023-05-15 12:29:34
字體:
供稿:網(wǎng)友

本文要介紹的C#本地讀寫二進制文件,二進制文件指保存在物理磁盤的一個文件。

第一步:讀寫文件轉(zhuǎn)成流對象。其實就是讀寫文件流 (FileStream對象,在System.IO命名空間中)。File、FileInfo、FileStream這三個類可以將打開文件,并變成文件 流。下面是引用微軟對File、FileInfo、FileStream的介紹

System.IO.File類 提供用于創(chuàng)建、復(fù)制、刪除、移動和打開文件的靜態(tài)方法,并協(xié)助創(chuàng)建 FileStream 對象。

System.IO.FileInfo類 提供創(chuàng)建、復(fù)制、刪除、移動和打開文件的實例方法,并且?guī)椭鷦?chuàng)建 FileStream 對象。無法繼承此類。

System.IO.FileStream類 公開以文件為主的 Stream,既支持同步讀寫操作,也支持異步讀寫操作。
我直接使用 FileStream,他繼承于Stream

第二步:讀寫流。讀寫二進制文件用System.IO.BinaryReaderSystem.IO.BinaryWriter類;讀寫文本文件用System.IO.TextReaderSystem.IO.TextWriter類。下面是我的實體 (即要保持到文件的數(shù)據(jù))
  /// <summary>
 /// 學(xué)生基本信息類
 /// </summary>
 public class Student
 {
  /// <summary>
  /// 學(xué)號變量
  /// </summary>
  private String _id;
  /// <summary>
  /// 姓名變量
  /// </summary>
  private String _name;
  /// <summary>
  /// 語文成績變量
  /// </summary>
  private Double _score1;
  /// <summary>
  /// 數(shù)學(xué)成績變量
  /// </summary>
  private Double _score2;
  /// <summary>
  /// 英語成績變量
  /// </summary>
  private Double _score3;


  /// <summary>
  /// 學(xué)號屬性
  /// </summary>
  public String Id
  {
   get return _id; }
   set _id value}
  }
  /// <summary>
  /// 姓名屬性
  /// </summary>
  public String Name
  {
   get return _name; }
   set _name value}
  }
  /// <summary>
  /// 語文成績屬性
  /// </summary>
  public Double Score1
  {
   get return _score1; }
   set _score1 value}
  }
  /// <summary>
  /// 數(shù)學(xué)成績屬性
  /// </summary>
  public Double Score2
  {
   get return _score2; }
   set _score2 value}
  }
  /// <summary>
  /// 英語成績屬性
  /// </summary>
  public Double Score3
  {
   get return _score3; }
   set _score3 value}
  }
 }

 下面是我的讀方法,讀取文件中的信息到參數(shù)List<Studentstu中  

  /// <summary>
  /// 讀取信息方法
  /// </summary>
  /// <returns>讀取是否成功</returns>
  public void ReadInfo(List<Studentstu)
  {
   Console.WriteLine("請輸入文件讀取路徑:(鍵入回車為默認路徑)");
   String filename Console.ReadLine();
   FileStream fs;
   //默認路徑
   if (filename == "")
   {
    fs new FileStream("student.dll"FileMode.Open);
   }
   else
   {
    //如果文件不存在,就提示錯誤
    if (!File.Exists(filename))
    {
     Console.WriteLine("/n/t讀取失敗!/n錯誤原因:可能不存在此文件");
     return;
    }
    //否則創(chuàng)建文件
    fs new FileStream(filename, FileMode.Open);
   }
   //使用二進制讀取
   BinaryReader br new BinaryReader(fs);
   Console.Write("讀取信息將覆蓋現(xiàn)有的信息,繼續(xù)嗎?y/n :");
   String command Console.ReadLine();
   if (command == "y" || command == "Y")
   {
    for (int 0; stu.Count; i++)
    {
     stu.RemoveAt(i);
    }
    //從磁盤上讀取信息
    try
    {
     while (true)
     {
      Student student new Student();
      student.Id br.ReadString();
      student.Name br.ReadString();
      student.Score1 br.ReadDouble();
      student.Score2 br.ReadDouble();
      student.Score3 br.ReadDouble();
      stu.Add(student);
      student null;
     }
    }
    catch (Exception)
    {
     Console.WriteLine("/n/n讀取結(jié)束!");
    }
   }
   br.Close();
   fs.Close();
  }


下面是我的寫入方法,寫入?yún)?shù)List<Studentstu中的數(shù)據(jù)


  /// <summary>
  /// 寫入信息方法
  /// </summary>
  /// <returns>寫入是否成功</returns>
  public void WriteInfo(List<Studentstu)
  {
   Console.WriteLine("請輸入文件保存路徑:(鍵入回車為默認路徑)");
   FileStream fs;
   String filename Console.ReadLine();
   //默認路徑
   if (filename == "")
   {
    fs new FileStream("student.dll"FileMode.Create);
   }
   //手動輸入路徑
   else
   {
    //如果文件存在,就提示錯誤
    if (File.Exists(filename))
    {
     Console.WriteLine("/n/t保存失敗!/n錯誤原因:可能存在相同文件");
     return;
    }
    //否則創(chuàng)建文件
    fs new FileStream(filename, FileMode.Create);
   }
   //數(shù)據(jù)保存到磁盤中
   BinaryWriter bw new BinaryWriter(fs);
   foreach (Student student in stu)
   {
    bw.Write((String)student.Id);
    bw.Write((String)student.Name);
    bw.Write((Double)student.Score1);
    bw.Write((Double)student.Score2);
    bw.Write((Double)student.Score3);
    bw.Flush();
   }
   bw.Close();
   fs.Close();
   Console.WriteLine("保存成功!");
  }
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品国产成人国产三级 | 亚洲 综合 欧美 动漫 丝袜图 | julieann艳星激情办公室 | 亚洲精品一二三区 | 亚州精品天堂中文字幕 | 主人在调教室性调教女仆游戏 | 亚洲一区成人 | 性爱视频在线免费 | 91羞羞 | 亚洲一级成人 | 成人免费观看49www在线观看 | 国产一级伦理片 | 在线 日本 制服 中文 欧美 | 成人黄视频在线观看 | 国产精品久久久久久影视 | 国产成人高清在线观看 | 欧美zoofilia杂交videos | 欧美国产一区二区三区 | 一二区成人影院电影网 | 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 精品国产乱码久久久久久久久 | 高清av免费 | 久久精品成人影院 | 免费一级毛片在线播放不收费 | 多男操一女视频 | 亚洲精品成人18久久久久 | 免费黄色在线观看网站 | 国产无限资源在线观看 | 伦理三区 | 狠狠干b | 免费一级毛片免费播放 | 国产精品爱久久久久久久 | 国产精品99久久久久久久女警 | 成人一级片毛片 | 91成人免费版 | 亚洲欧美成aⅴ人在线观看 免费看欧美黑人毛片 | 精品亚洲二区 | 日韩视频在线一区二区三区 | 羞羞的视频在线 | 久久久久国产成人免费精品免费 | 麻豆传传媒久久久爱 |