2014-04-16 26 views
0

好吧,所以我想知道我將如何採取在文本框中的東西,然後我按下按鈕,文本框的內容將被保存到文件位置,然後當我加載.exe備份,內容將重新出現在文本框中。寫一些東西到文件,然後再加載它

這是我迄今爲止

private void button3_Click(object sender, EventArgs e) 
{ 
File.WriteAllText(@"C:\Application.txt", textBox1.Text); 
} 

^將其寫入到文件位置,我已經嘗試了這個多次,但它似乎沒有想使我的文件C :.

private void Form1_Load(object sender, EventArgs e) 
{ 
try 
{ 
textBox1.Text = File.ReadAllText(@"C:\Application.txt", Encoding.ASCII); 
} 
catch 
{ 

} 

^加載該文件,然後注入其放回它

任何及所有的幫助來將文本框讚賞, 感謝。

+1

代碼本身似乎對我來說是正確的。你確定在保存文件時你沒有收到許可錯誤或什麼? –

+1

而且?代碼看起來很合理(缺少可能的「訪問被拒絕」來寫在c:的根目錄下) - 你有沒有得到任何錯誤/異常? –

+0

沒有錯誤彈出,所以除非它的隱藏我會說不 – Wire

回答

3

嘗試寫入C驅動器時可能會遇到異常,因爲它需要管理訪問權限。嘗試以管理員身份運行Visual Studio(因此,應用程序將從VS啓動時以管理員身份運行)或嘗試寫入其他位置。你的代碼都很好。 位是不必要的,但我建議刪除它(更可能不是您將編寫該文件的編碼)。

+0

我以管理員身份運行並且文件未創建,因此我可以創建該文件的任何建議? – Wire

+1

@Dakota你可以使用像'@「這樣的相對路徑。\ Application。txt「,這將寫入到你的二進制文件所在的文件夾中,並且你可以給它一個類似於C:\ Users \ Dakota \ Documents或者其他類似文件的路徑 – evanmcdonnal

+0

謝謝,我把它寫到了他們的Program Files中,工作:D – Wire

1

試圖直接寫入C:驅動器可能會導致問題。

嘗試寫入一個您肯定有寫權限的位置。您可以使用ApplicationData目錄(用於當前用戶特有的應用程序文件),或者如果您願意,可以使用SpecialFolder.MyDocuments

private string applicationFilePath = Path.Combine(Environment.GetFolderPath(
    Environment.SpecialFolder.ApplicationData), "Application.txt"); 

private void button3_Click(object sender, EventArgs e) 
{ 
    File.WriteAllText(applicationFilePath, textBox1.Text); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    textBox1.Text = File.ReadAllText(applicationFilePath, Encoding.ASCII); 
} 
0

我會做這樣的事情:

using System.IO; 

private void button3_Click(object sender, EventArgs e) 
{ 
    using (var stream = new FileStream(@"C:\Application.txt", FileMode.Create)) 
    using (var writer = new StreamWriter(stream, Encoding.ASCII)) 
     writer.Write(textBox1.Text); 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    using (var stream = new FileStream(@"C:\Application.txt", FileMode.Open)) 
    using (var reader = new StreamReader(stream, Encoding.ASCII)) 
     textBox1.Text = reader.ReadToEnd(); 
} 

我覺得這個方法可以讓您在您的內容更多的控制。嘗試探索FileMode枚舉的內容,並確保使用System.IO添加您的;指令。
小心不要將using statementusing directive混淆。

此外,請務必在完成時處理/關閉流,以確保數據已被刷新,並且文件不再由應用程序使用。在這裏,使用語句在流不再使用時處理丟棄的工作。

編輯:正如其他職位所述,由於管理員訪問限制,寫入到C:目錄導致較新的操作系統出現問題。確保寫入您確實有權訪問的不同驅動器/文件夾。

// Current User 
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Application.txt"); 
// All users 
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Application.txt"); 
相關問題