C#创建及读取DAT文件操作

*.DAT 从后缀名上也能理解其中的含义即:data文件,数据文件;这个文件有的可以用记事本工具打开,但是加密后就不一定了。

很多程序都创建dat文件来保存设定。创建一个只有自己才能解析得dat文件,并且可以读取和写入,写一个类,它可以创建一个只有使用这个类才能解析得dat文件。

同时读取或写入数据进dat文件时,也只可以使用这个类来读取写入。

简单来说就是这个类是打开读取写入这个dat文件得钥匙!其实用来保存设置的文件后缀名可以各种各样。

一、读写设置文件类

/// <summary>
/// 加密、解密
/// </summary>
public class EncryptUtilSeal
{
 private static byte[] key = new byte[] { 78, 56, 61, 94, 12, 88, 56, 63, 66, 111, 102, 77, 1, 186, 97, 45 };
 private static byte[] iv = new byte[] { 36, 34, 42, 122, 242, 87, 2, 90, 59, 117, 123, 63, 72, 171, 130, 61 };

 private static IFormatter S_Formatter = null;

 static EncryptUtilSeal()
 {
  S_Formatter = new BinaryFormatter();//创建一个序列化的对象
 }
 /// <summary>
 /// 采用Rijndael128位加密二进制可序列化对象至文件
 /// </summary>
 /// <param name="para">二进制对象</param>
 /// <param name="filePath">文件路径</param>
 /// <returns></returns>
 public static bool EncryptObject(object para, string filePath)
 {
  //创建.bat文件 如果之前错在.bat文件则覆盖,无则创建
  using (Stream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
  {
   RijndaelManaged RMCrypto = new RijndaelManaged();
   CryptoStream csEncrypt = new CryptoStream(fs, RMCrypto.CreateEncryptor(key, iv), CryptoStreamMode.Write);
   S_Formatter.Serialize(csEncrypt, para);//将数据序列化后给csEncrypt
   csEncrypt.Close();
   fs.Close();
   return true;
  }
 }

 /// <summary>
 /// 从采用Rijndael128位加密的文件读取二进制对象
 /// </summary>
 /// <param name="filePath">文件路径</param>
 /// <returns>二进制对象</returns>
 public static object DecryptObject(string filePath)
 {
  //打开.bat文件
  using (Stream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
  {
   object para;
   RijndaelManaged RMCrypto = new RijndaelManaged();
   CryptoStream csEncrypt = new CryptoStream(fs, RMCrypto.CreateDecryptor(key, iv), CryptoStreamMode.Read);
   para = S_Formatter.Deserialize(csEncrypt); //将csEncrypt反序列化回原来的数据格式;
   csEncrypt.Close();
   fs.Close();
   return para;
  }
 }
}

调用:

string ConfigFilePath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "config.dat");
//写入
Hashtable para = new Hashtable();
para.Add("ZH", tbxZH.Text);
para.Add("MM", pbxMM.Password);
EncryptUtilSeal.EncryptObject(para, ConfigFilePath);

//读取
Hashtable para = new Hashtable();
object obj = EncryptUtilSeal.DecryptObject(ConfigFilePath);
para = obj as Hashtable;
string ZH = para["ZH"].ToString();
string MM = para["MM"].ToString();

补充知识:C# 输出数据表并生成.dat文件

目前想实现的功能是:输出参数(比如距离、功率等)在某个区间内变化时对应的传输损耗数据,然后进行画图。

暂时实现的是将输出的数据显示在textbox中,然后生成.dat文件。这样的话,后面调用gnuplot作图的时候就只需要使用这个.dat文件就可以了。

所以这一篇博客是介绍怎么用C#产生多组数据显示到textbox中,并将这些数据保存成为一个.dat文件。

1.产生数据并显示

以Hata模型中城市的传输损耗计算为例,让发射频率固定为900MHz,基站天线高度30m,移动台天线高度1m,传输距离范围为1~20km,计算传输损耗值,输出对应数据表到 textbox 中显示。

int f_c = 900;  //发射频率
int h_te = 30;  //基站天线高度
int h_re = 1;  //移动台天线高度
int d;    //传输距离
double L;
for (d = 10; d <= 20; d++)
{
  L = 69.55 + 26.16 * (Math.Log10(f_c)) - 13.82 * (Math.Log10(h_te)) - (3.2 * (Math.Log10(11.75 * h_re)) * (Math.Log10(11.75 * h_re)) - 4.97) + (44.9 - 6.55 * (Math.Log10(h_te))) * (Math.Log10(d));
  Txt_data.Text += d.ToString();
  Txt_data.Text += " ";
  Txt_data.Text += L.ToString("0.00");  //保留两位小数
  Txt_data.Text += "\r\n";     //textbox的换行
}

运行结果:

2.产生.dat文件

实际上是将 textbox 中的数据写到创建的数据文件中。

需要加入引用:

using System.IO;

代码:

 FileStream fs = new FileStream("D:\\a.dat", FileMode.Create); //支持文件读写
 BinaryWriter bw = new BinaryWriter(fs);      //二进制输入
 bw.Write(System.Text.Encoding.Default.GetBytes(this.Txt_data.Text));
 //转化为二进制写入文件

 bw.Flush();    //清理缓冲器
 bw.Close();
 fs.Close();

使用VC打开a.dat的结果:

3.使用命令窗口对数据进行作图

打开a.dat所在目录

C:\Users\Adninistrator>D:

使用gnuplot命令

D:\>gnuplot

使用数据文件作图:

gnuplot>plot "a.dat" w l

运行结果:

4.下一步的任务

接下来就是要使用C#调用gnuplot进行画图(不使用命令窗口,也不需要输入命令),然后将图像进行保存后,再显示到 C# 中的 picturebox 中就行。

以上这篇C#创建及读取DAT文件操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • C# 使用multipart form-data方式post数据到服务器

    使用multipart/form-data方式提交数据与普通的post方式有一定区别.multipart/form-data的请求头必须包含一个特殊的头信息:Content-Type,其值必须为multipart/form-data.另外还需要规定一个内容分割符用于分割请求体中的多个post的内容,如文件内容和文本内容,只有这样服务端才能正常解析数据.但是,multipart/form-data的基础还是post,它是由post方法来实现的.下面分别给出两种方法提交multipart/form-

  • C# DataTable与Model互转的示例代码

    /// <summary> /// 实体转换辅助类 /// </summary> public class ModelConvertHelper<T> where T : new() { /// <summary> /// List泛型转换DataTable. /// </summary> public DataTable ListToDataTable<T>(List<T> items) { var tb = new D

  • SQLite之C#版 System.Data.SQLite使用方法

    SQLite简介 SQLite,是一款轻型的关系型数据库.它的设计目标是嵌入式. 它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 C++.C#.Object-C.PHP.Java等. 我是做手游开发的,在手机上使用SQLite 存储数据是很方便的. System.Data.SqLite实践前期准备 System.Data.SQLite 库下载,用于C#操作SQLite的dll文件.下载地址:http://system.data.sqlite.

  • C# DataSet查看返回结果集的实现

    先看一段代码: private DataSet GetDataSet(string strsql) { string strcon = "server = 192.168.2.1,1433;uid = sa ; pwd = 123456 ; database = MyDB"; SqlConnection con = new SqlConnection(strcon); DataSet ds = new DataSet(); try { SqlDataAdapter DA = new S

  • C# DataTable常见用法汇总

    C# DataTable 的常见用法: (1)新建数据表. DataTable dt=new DataTable();如果带个String参数,此参数表示表名. (2)向表添加列. //数据库的Nvarchar等类型,在此可用String兼容.可不指明数据类型 DataColumn dc = new DataColumn("商品编号", typeof(system.string)); dt.Columns.Add(dc); (3)设置表特定行与列的数据值. dt.Rows[i].Set

  • C# 实现dataGridView选中一行右键出现菜单的示例代码

    在窗体中添加DataGridView控件和ConTextMenuStrip1控件,修改DataGridView属性,将contextMenuStrip控件绑定dataGridView控件 this.dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //选中整行可在属性中修改 datagridview.AutoGenerateColumns = false;//不让datagridview自动生成列,可在属

  • C#创建及读取DAT文件操作

    *.DAT 从后缀名上也能理解其中的含义即:data文件,数据文件:这个文件有的可以用记事本工具打开,但是加密后就不一定了. 很多程序都创建dat文件来保存设定.创建一个只有自己才能解析得dat文件,并且可以读取和写入,写一个类,它可以创建一个只有使用这个类才能解析得dat文件. 同时读取或写入数据进dat文件时,也只可以使用这个类来读取写入. 简单来说就是这个类是打开读取写入这个dat文件得钥匙!其实用来保存设置的文件后缀名可以各种各样. 一.读写设置文件类 /// <summary> //

  • 如何使用Golang创建与读取Excel文件

    目录 摘要 引言 正文 架构 文件对象 数据的表示 数据的解析 实际架构 Excelize 基础库 文件 坐标 样式 单元格操作 数据验证 数据的表示和解析 表示 解析 大规模数据的写入 需要关注的问题 大量枚举值的设置 大工作表的读取 流式写入的注意事项 结语 参考资料 总结 摘要 本文提出一种使用 Golang 进行 Excel 文件创建和读取的方案.首先对问题进行分析,引出方案的基本架构:然后分章节描述了 Excelize 基础库的基本用法,以及 Excel 数据在 Golang 中的表示

  • 比较详细的完美解决安装sql2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作。 原创

    安装sql2000时出现以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机. 安装sql2000是,因为是在win2003上安装的,出现了错误,退出安装,重启后,仍然出现以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机.,实在没办法,只好上网搜了下, 原来,可以通过修改注册表的方法,突破这个问题,为什么在win2003上sql2000太容易出现这个问题了,还好右高手们想到了这个办法,我们就不需要重启了.以后碰到这样的提

  • 完美解决SQL Server 安装问题:以前的某个程序安装已在安装计算机上创建挂起的文件操作

    安装SQL Server 遇到错误提示: 以前的某个程序安装已在安装计算机上创建挂起的文件操作.运行安装程序之前必须重新启动计算机!. 找了半天,没发现什么一场程序,该机器上以前没安装过SQL Server. 重启多次后,还是不行,搜索了一下,发现这篇Blog最有价值: 3)打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Control\Session Manager 中找到PendingFileRenameOperations项目,

  • C#使用Aspose.Cells创建和读取Excel文件

    使用Aspose.Cells创建和读取Excel文件,供大家参考,具体内容如下 1. 创建Excel Aspose.Cells.License li = new Aspose.Cells.License(); li.SetLicense("Aspose.Cells.lic"); Aspose.Cells.Workbook wk = new Aspose.Cells.Workbook(); Worksheet ws = wk.Worksheets[0]; for (int i = 0;

  • 在C#中创建和读取XML文件的实现方法

    1.创建简单的XML文件为了便于测试,我们首先创建控制台应用程序,项目命名为CreateXml,Program.cs代码如下: 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml; namespace CreateXml{    class Program    {        static void Main(string[]

  • 完美解决MSSQL"以前的某个程序安装已在安装计算机上创建挂起的文件操作"

    步骤是: 1)添加/删除程序中彻底删除sql server. 2)将没有删除的sql server目录也删除掉. 3)打开注册表编辑器,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control \Session Manager中找到PendingFileRenameOperations项目,并删除它.这样就可以清除安装暂挂项目. 4)删除注册表中跟sql server相关的键. 其中第3步最重要!!!这里所说的找到不是在左边的文件夹找到,而是从右边

  • PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例

    本文实例讲述了PHP检查文件是否存在,不存在自动创建及读取文件内容操作.分享给大家供大家参考,具体如下: <?php $filename = 'a/b.html'; $writetext = 'ssssssssssss'; $result = jwritefile($filename, $writetext); var_dump($result);die; function jwritefile($filename, $writetext) { $position = strrpos($file

  • PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)

    本文实例总结了PHP目录与文件操作技巧.分享给大家供大家参考,具体如下: Demo1.php <?php //将一个路径赋给一个变量 //它目前来说,只是一个字符串,字符串表示的是一个目录的路径 //文件名包含,文件的名称 + 文件的扩展名(就是.后面的文件类型) //文件的扩展名说白了就是文件后缀 $path = 'C:\AppServ\www\Basic6\Demo1.php'; // echo basename($path); // echo '<br/>'; // //dirna

  • jsp文件操作之读取篇

    文件操作是网站编程的重要内容之一,asp关于文件操作讨论的已经很多了,让我们来看看jsp中是如何实现的. 这里用到了两个文件,一个jsp文件一个javabean文件,通过jsp中调用javabean可以轻松读取文本文件,注意请放置一个文本文件afile.txt到web根目录的test目录下,javabean文件编译后将class文件放到对应的class目录下(tomcat环境). Read.jsp <html> <head> <title>读取一个文件</titl

随机推荐