写入文本文件,将文本附加到文件,然后加载(回读)

时间:2013-12-09 18:06:45

标签: c# winforms

这是我在新课程中的代码:

public static void Save(List<Point> points, int imageWidth, int imageHeight, double originalFactor, double currentFactor)
{
   string appDirectory = Path.GetDirectoryName(Application.LocalUserAppDataPath);
   string textFile = "LightningsDistance.txt";
   string path = "LightningsDistance";
   string lightningsDistancePath = Path.Combine(appDirectory,path);
   string file = Path.Combine(lightningsDistancePath,textFile);
   if (!Directory.Exists(lightningsDistancePath))
   {
      Directory.CreateDirectory(lightningsDistancePath);
   }
   if (!File.Exists(file))
   {
      File.Create(file);
   }
}

文本文件的格式应该是:

Image Width:             Image Height:        

Original Factor:         Current Factor:

Points Coordinates:

在积分坐标中,它应该是这样的:

Coordinate 1: X = 21, Y = 25
Coordinate 2: X = 210, Y = 344

等等。列表点就像这样,例如在索引0中我看到:X = 21 Y = 35

在Form1中,我有一个单击按钮,我在其中调用此保存方法:

private void button2_Click(object sender, EventArgs e)
{
   CloudEnteringAlert.Save(picturebox1PointsCoordinates, img.Width, img.Height, factor, currentfactor);
}

我希望当我单击按钮时它会写入文本文件,如果我单击一次并绘制更多点并再次单击该按钮,则会将新信息添加(追加)到文本文件中格式如上,不要覆盖现有文件。

然后我有另一个调用Load方法的单击按钮。 Load方法到目前为止还没有任何进展。就在新课堂上:

public static void Load()
{

}

我需要在任何时候单击“加载”时,它将从我保存的文本文件中读取信息,并且现在仅将“点”坐标分配回“列表”点。

1 个答案:

答案 0 :(得分:1)

File.AppendAllText( - )就是你所需要的。它的语法类似于;

File.AppendAllText(string path,string contents,Encoding encoding);

所以你需要的是用适当的参数调用这个函数,比如这个;

File.AppendAllText(textFile,"Something to write...");

如果使用正确的路径运行此语句5次,则生成的文件将包含五行文本,每行包含“要编写的内容...”

希望这是解决问题的方法。