C#进行dat文件读和写操作

本文介绍了如何读取和写入DAT及CSV文件,包括使用记事本打开DAT文件可能遇到的乱码问题,以及通过读取CSV文件并将其转换为DAT文件的步骤。同时提供了读取DAT文件并将内容显示在文本框中的方法,涉及二进制流的使用。
摘要由CSDN通过智能技术生成

1、Dat文件说明

*.DAT 从后缀名上也能理解其中的含义即:data文件,数据文件;这个文件有的可以用记事本工具打开,但是加密后就不一定了。 很多程序都创建dat文件来保存设定。创建一个只有自己才能解析得dat文件,并且可以读取和写入。

如下,写好的dat文件如果用记事本打开则是乱码。 

2、读文本和文档数据

读文档数据可以读取txt文本文件或者其它文件,本测试读取CSV文件。CSV和txt读写方法一样,只是文件名不一样。

string strOpenFilePath;
                string strOpenFileName;

                int dataColumNums = 0;      //动作文件列表数
                int dataLineNums;   //
                //=======================================读CSV文件===============================================//
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "CSV文件(*.csv)|*.csv|All files(*.*)|*.*";
                if (ofd.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                skinTxtDataFilePath.Text = ofd.FileName;
                strOpenFilePath = ofd.FileName;
                strOpenFileName = ofd.SafeFileName;

                string[] lines = File.ReadAllLines(strOpenFilePath, Encoding.Default).ToArray();
                dataColumNums = CharNum(lines[0], ";");
                dataLineNums = lines.Length;

                axisDataArrayRead = new double[dataColumNums, dataLineNums];
                

                for (int i = 0; i < lines.Length;i++ )
                {
                    //string[] seg = lines[i].Split('\t');    // tab符号 \t
                    string[] seg = lines[i].Split(';');    // tab符号 \t
                    for (int j = 0; j < dataColumNums; j++)
                    {
                        axisDataArrayRead[j, i] = float.Parse(seg[j]);                        
                    }
                }

                Thread.Sleep(1000);

                if(MessageBox.Show("读取CSV文件成功,确定转Dat文件?","提示",MessageBoxButtons.YesNo)!=DialogResult.Yes)
                {
                    return;
                }

3、写dat文件

//=======================================写dat文件===============================================//
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                saveFileDialog1.Filter = "二进制文件(*.dat)|*.dat";              //设置保存文件的格式
                dataSavePath = @"C:\Users\Administrator\Desktop\NewTest.dat";

                //使用“另存为”对话框中输入的文件名实例化FileStream对象
                FileStream myStream = new FileStream(dataSavePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);

                //使用FileStream对象实例化BinaryWriter二进制写入流对象
                BinaryWriter myWriter = new BinaryWriter(myStream);

                //myWriter.Write(strImport);      //以二进制方式向创建的文件中写入内容
                for (int i = 0; i < dataLineNums; i++)
                {
                    for (int j = 0; j < dataColumNums; j++)
                    {
                        myWriter.Write(axisDataArrayRead[j, i]);        //将float型二维数组写到dat文件中
                    }
                }

                myWriter.Close();       //关闭当前二进制写入流

                myStream.Close();       //关闭当前文件流

                Thread.Sleep(500);
                MessageBox.Show("导出完成", "提示");

读CSV文件和转换写dat操作

读csv,如果读txt的话即选择All Files即可或者在程序代码中文件类型添加txt类型选项即可

 

 

 

4、读dat文件

txtDatRead.Text = "";
            for (int i = 0; i < lines; i++)
            {
                for (int j = 0; j < 6; j++)
                {
                    datFileRead[i, j] = 0;
                }
            }

            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "dat文件(*.dat)|*.dat|All files(*.*)|*.*";
            if (ofd.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            string filePath = ofd.FileName;
            string fileName = ofd.SafeFileName;

            
           
            //使用“打开”对话框中选择的文件名实例化FileStream对象
            FileStream myStream = new FileStream(filePath, FileMode.Open, FileAccess.Read);
            //使用FileStream对象实例化BinaryReader二进制写入流对象
            BinaryReader myReader = new BinaryReader(myStream);

            try
            {
                if (myReader.PeekChar() != -1)
                {
                    for (int i = 0; i < lines; i++)
                    {
                        for (int j = 0; j < 6; j++)
                        {
                            if (myReader.PeekChar() != -1)
                            {
                                datFileRead[i, j] = (float)myReader.ReadDouble();
                            }

                        }
                    }
                }
            }

            catch { }

            //关闭当前二进制读取流
            myReader.Close();
            //关闭当前文件流
            myStream.Close();
            //Thread.Sleep(500);

            string strShow="";
            for (int i = 0; i < lines; i++)
            {
                strShow = strShow + i.ToString() + "行" + '\t';
                for (int j = 0; j < 6; j++)
                {
                    strShow = strShow + datFileRead[i, j].ToString("f2") + '\t';                   
                }
                strShow = strShow + "\r\n";
            }
            txtDatRead.Text = strShow;

操作方式,选择已经转换好了的dat文件打开然后在文本框中显示

 

 

5、代码下载连接

https://mp.csdn.net/mp_download/manage/download/UpDetailed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Big_潘大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值