2016-02-14 45 views
0

所以問題說我有一個程序設置爲在Windows啓動時啓動,但它不會讀取它旁邊的.txt,當我啓動它的程序時。程序在啓動時不會讀取文本文件,但它在啓動時會啓動嗎?

bool cdexist = File.Exists("cd.txt"); 
if (cdexist) 
{ 
    StreamReader sr = new StreamReader("cd.txt"); 
    time = Convert.ToInt32(sr.ReadLine()); 
    sr.Close(); 
    if (time != 0) 

    {}.....rest of the code 

什麼可能是問題?

編輯:第一部分,我寫信給

{ 

timeleft = time - i; 
label1.Text = timeleft.ToString(); 
StreamWriter sw = new StreamWriter("cd.txt"); 
sw.Write(timeleft); 
sw.Close(); 

i++; 

} 

編輯 我無法解決該問題的文件,我試着重新創建PC啓動時,並儘快我在桌面上會發生什麼我啓動了該程序並且它正在工作,但是當系統使用Windows自動執行時,它似乎不會讀取.txt。

+0

它旁邊的.txt是什麼意思?你是指命令行參數嗎? – Plutonix

+0

.txt只是存儲一個數字,每當數值發生變化時重寫該數字(並立即用streamwriter關閉文件),可能會導致此問題的是我的程序強制關閉PC,是否有可能txt是沒有正確保存? –

+0

寫入文件時沒有刷新流。嘗試在sw.Close()之前添加'sw.Flush()'。 – DDoSolitary

回答

2

"cd.txt"這樣的文件路徑總是被相對地解釋。通常它們被解釋爲與當前工作目錄相關。當你只是執行你的程序,例如從你的Windows資源管理器,然後工作目錄是可執行文件的位置。所以它會直接在應用程序旁邊查找文件。

但是,以不同的方式執行時,工作目錄可能會有很大差異。因此,如果您希望文件位於可執行文件的旁邊,則應該更改程序以在此處查找它。例如像這樣:

string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "cd.txt") 
bool cdexist = File.Exists(filePath); 
// … 

檢查this question其他方法來獲取正確的目錄。

+0

我會檢查這一個很快,但僅供參考,我有「cd.txt」設置,因爲我正在創建可執行文件旁邊的文件。 –

+0

這樣做的竅門我剛開始沒有正確使用它。謝謝! –

+0

很高興結果很好,歡迎您:) – poke

相關問題