你好 这个问问题我来回答你
首先你已经知道了你要做的是把文本内容写到dat文件中
但是你不知道如何把一组数据写入 并读出 和编辑
你首先需要一个数据结构 存放这一组数据 我们写如下一个类,并声明为可序列化,之所以把他写为一个类,是因为我们可以在里面扩展更多的内容,在这里我们只以这个string的列表为成员
[Serializable]
public class Mystring
{
public Mystring(){}
Public Ilist
}
然后我们要有一个序列化操作的类
在这里 我把我常用的两个类奉上
1:
序列化基类
public abstract class Serializer
{
string filePath;
public string FilePath
{
get { return filePath; }
set { filePath = value; }
}
public Serializer(string filePath)
{
this.filePath = filePath;
}
public bool Serialize(T serializeObj)
{
using (Stream st = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
return S(st, serializeObj);
}
}
protected abstract bool S(Stream st, T serializeObj);
public T Deserialize()
{
using (Stream st = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
return D(st);
}
}
protected abstract T D(Stream st);
}
2, 继承上面基类的实际操作类
class SerializerBinary
{ public SerializerBinary(string filePath) :
base(filePath) { }
protected override bool S(Stream st, T serializeObj)
{
BinaryFormatter bf = new BinaryFormatter();
try
{
bf.Serialize(st, serializeObj);
return true;
}
catch { return false; }
}
protected override T D(Stream st)
{
BinaryFormatter bf = new BinaryFormatter();
return (T)bf.Deserialize(st);
}
}
这样 我们就有了操作的方法
具体操作步骤如下
1 把所有文本框的内容写如 这个Mystring类的Mystr中
2 将Mystring类序列化到文件中
Serializer
if (MySave.Serialize(this.MyOledbDatasList))
MessageBox.Show("文件保存成功", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
3 读取这个含有我们要的字符串数组的类
Serializer
Mystring MyStr = new Mystring();
try
{
MyStr = MyOpen.Deserialize();//这里就取道了
LoadFile.Dispose();
}
catch
{
MessageBox.Show("你打开的不是有效的文件!","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
4 我门既然取道了还原为Mystring 的数组 那么你可以从里面去到你想要的任一个字符串,并且编辑他
5,重新调用步骤2 将编辑后的Mystring写如文件即可
希望我的回答对你有帮助。。。
你可以读入dat文件(A.dat),找到需要显示的行。
然后显示,修改。
当需要保存是将已经读入的文件的内容(除了你要编辑的最后一行)写入临时文件(B.dat)。再追加写入你的编辑内容。
最后将原文件改名(A.dat -> C.dat),新文件改成原文件的名字(B.dat -> A.dat),把改名后的旧文件(C.dat)删除。
你可以用INI文件这个要用API
或者你每次生成一个临时文件,修改的时候直接写临时文件之后把原来那个文件删除将临时文件改名