2013-12-09 86 views
0

這是我在一個新的類代碼:寫入文本文件,文本追加到該文件,然後加載(讀回)

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

你看過[寫入文件](http://stackoverflow.com/questions/8854984/write-text-file-c-sharp-streamwriter)?也許[序列化/反序列化](http://stackoverflow.com/questions/6115721/how-to-save-restore-serializable-object-to-from-file)? – Zong

+0

你的問題是什麼? –

+0

查看流媒體閱讀器和流發佈者這就是你的答案。 –

回答

1

File.AppendAllText( - )就是這個用途所需要的。它的語法類似於;

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

所以你只需要用適當的參數調用這個函數,像這樣;

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

如果你有一個正確的路徑運行該語句5倍,生成的文件將包含五行文本具有每行「東西寫......」

希望這是解決你的問題。