2015-12-21 64 views
0
string pathDir = Path.GetDirectoryName(Application.LocalUserAppDataPath) + "\\settings"; 
string settingsFile = "settings.txt"; 
StreamWriter w; 

public Form1() 
{ 
    InitializeComponent(); 

    if (!Directory.Exists(Path.Combine(pathDir, settingsFile))) 
     Directory.CreateDirectory(Path.Combine(pathDir, settingsFile)); 
    settingsFile = Path.Combine(pathDir, settingsFile); 
    w = new StreamWriter(settingsFile, true); 

唯一的例外是上線:爲什麼我得到文件訪問被拒絕嘗試製作StreamWriter實例?

w = new StreamWriter(settingsFile, true); 

訪問路徑 'C:\用戶\ bout0_000 \應用程序數據\本地\ Grads_Scripts \ Grads_Scripts \設置\ SETTINGS.TXT' 被拒絕

,現在我把該StreamWriter的實例爲textBox1_TextChanged事件:

private void textBox1_TextChanged(object sender, EventArgs e) 
     { 
      w = new StreamWriter(settingsFile, true); 
      w.Write(textBox1.Text); 
      w.Close(); 
     } 

我想將我輸入textBox1的文本實時寫入文本文件。沒有按鈕點擊確認或者其他東西,但實時。當我輸入時,它會將它寫入文本文件。但現在我在文本文件中看到的所有輸入內容都是相同的。

+3

你有「settings.txt」打開其他東西,如記事本? – Russ

+6

我似乎在創建一個名爲'[\] \ Grads_Scripts \ settings \ settings.txt'的目錄,然後嘗試將其作爲文件寫入。 –

+1

很好,趕上瑞安,對我來說,國際海事組織,你應該張貼作爲答案。 –

回答

2

我看上去您正在創建一個名爲[...]\Grads_Scripts\settings\settings.txt的目錄,然後嘗試將其作爲文件寫入。轉到目錄C:\Users\bout0_000\AppData\Local\Grads_Scripts\Grads_Scripts\settings\並查看是否有名爲settings.txt的文件夾。如果是這樣,請刪除它並修改您的代碼以僅創建父目錄。

你應該能夠改變你的代碼如下:

string pathDir = Path.GetDirectoryName(Application.LocalUserAppDataPath) + "\\settings"; 
string settingsFile = "settings.txt"; 
StreamWriter w; 

public Form1() 
{ 
    InitializeComponent(); 

    // Create the parent directory if it doesn't exist 
    if (!Directory.Exists(pathDir)) 
     Directory.CreateDirectory(pathDir); 
    settingsFile = Path.Combine(pathDir, settingsFile); 
    w = new StreamWriter(settingsFile, true); 
} 

記得來包裝你StreamWriter在using語句(或手動調用Dispose),這樣您寫完之後的文件資源被釋放。

using(w = new StreamWriter(settingsFile, true)){ 
    // Write to stream writer 
} 
相關問題