C#之自动保存和读取数据
在做机器人抓取项目时,根据“九点标定”法获得了一组建立机器坐标和相机坐标转换关系的数据,在机器人和相机位姿不改变的前提下,如果不将这组数据保存,则每次打开操作界面都需要重新进行标定。为了避免重复操作,需要将数据自动保存,且在下次抓取时自动读取。解决方法如下:
文件保存方法:
/// <summary>
///
/// </summary>
/// <param name="name"> 文件名 </param>
/// <param name="data"> 保存的数据 </param>
/// <returns></returns>
private string SaveToFile(string name,string data)
{
string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir\"; //设置保存路径为当前目录(保存在项目文件夹下)
if (!System.IO.Directory.Exists(CurDir)) System.IO.Directory.CreateDirectory(CurDir); //如果该路径不存在时,在当前文件目录下创建文件夹
String filePath = CurDir + name + ".txt";//保存文件的路径+名称+格式
System.IO.StreamWriter file1 = new System.IO.StreamWriter(filePath, false); //文件以覆盖方式添加内容(即下一次添加的数据会覆盖当前的数据)
file1.Write(data); //保存数据到文件
file1.Close(); //关闭文件
file1.Dispose(); //释放对象
return filePath;
}
调用文件保存方法:
将文件名称及要保存的数据传入方法中,则会在项目文件夹中生成一个SaveDir文件(这个文件名可由自己定义),在此文件中会存放“标定参数”文本文档,方法调用成功后可以打开项目文件夹查看,如图所示:
文件读取方法:
/// <summary>
///
/// </summary>
/// <param name="filePath"> 文件路径 </param>
/// <returns></returns>
public string fileToString(string filePath)
{
string str = "";
//获取文件内容
if (System.IO.File.Exists(filePath))
{
System.IO.StreamReader file1 = new System.IO.StreamReader(filePath);//读取文件路径
str = file1.ReadToEnd(); //读取文件中的数据
file1.Close();
file1.Dispose();
}
return str;
}
调用文件读取方法:
//将文件保存方法中生成的文件路径传入到文件读取方法中
string strData = fileToString(System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir\" + "标定参数" + ".txt");