2013-07-24 385 views
0

我在executablePath位置創建文本文件。C#winforms - 找不到在Application.ExecutablePath位置創建的文本文件

Path.GetDirectoryName(Application.ExecutablePath) + "\\Paths.txt"; 

應用程序工作完全正常,但是當我檢查可執行文件目錄中有一些奇怪的原因,該文本文件不存在。

我有一種感覺,它創建了一些其他位置的文件,但我似乎無法找到它。

我正在創建這樣的文件;

string PathsDirectory =Path.GetDirectoryName(Application.ExecutablePath)+"\\Paths.txt"; 
TextWriter tw = new StreamWriter(PathsDirectory); 
tw.WriteLine(Data); 
tw.Close(); 

並讀取它像這樣;

string PathsDirectory =Path.GetDirectoryName(Application.ExecutablePath)+"\\Paths.txt"; 
TextReader tr = new StreamReader(PathsDirectory); 
string line; 
while ((line = tr.ReadLine()) != null) 
{ 
} 

我檢查了concat後的路徑,一切看起來都很好,除非我在那裏看不到文件。

好吧,最後我發現它裏面的文件;

C:\用戶\愛麗絲\應用程序數據\本地\ VirtualStore \程序文件(x86)\ MyMovies \ MyMovies

insted的的

C:\ Program Files文件(x86)的\ MyMovies \ MyMovies

+0

使用'Path.Combine'。 –

+1

您應該顯示創建該文件的代碼以及檢查其存在的代碼 – Steve

+0

您是否使用調試器驗證了字符串連接之後的路徑? –

回答

1

使用Path.Combine(Assembly.GetExecutingAssembly().Location, "Paths.txt");

+0

盡一切可能的方式,仍然無法看到該文件。我還在文件創建之前放置了一個消息框,告訴我路徑,它非常好。 – user1778459

+0

運行該程序的帳戶是否有權寫入該目錄?另外,正如@keyboardP所建議的那樣,您是否捕捉並且不處理異常? –

+1

哇它在這個位置創建文件; C:\ Users \ Alican \ AppData \ Local \ VirtualStore \ Program Files(x86)\ MyMovies \ MyMovies什麼是虛擬存儲,它爲什麼放在那裏? – user1778459

0

我已經試過這一點,它在我的電腦工作:

string filePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\path.txt"; 
TextWriter tw = new StreamWriter(filePath); 
tw.WriteLine("How are you?"); 
tw.Close(); 
Console.WriteLine(filePath); 

我看了目錄內的文件就在那裏,幷包含我寫了這樣一句話:

c:\CDash\tests\path\path\bin\Debug\path.txt 
1

在應用程序運行時,應考慮您的權限等級。

事實上,它進入VirtualStore文件夾告訴我,您沒有足夠的權限寫入ProgramFiles目錄,只要你願意。

嘗試以管理員身份運行。一般來說,寫入ProgramFiles目錄是一個壞主意。我會建議寫入用戶空間是這樣的:

String PathsDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Paths.txt"); 

Environment.SpecialFolder枚舉提供了所有的標準用戶可訪問的位置,還搞什麼Desktop