2013-11-27 147 views
0

在我的項目中有一個文件夾,並在該文件夾中有文本文件。我想讀取該文本文件問題在文件路徑

 string FORM_Path = @"C:\Users\...\Desktop\FormData\Login.txt"; 
     bool first = true; 
     string line; 
     try 
     { 
      using (StreamReader streamReader = File.OpenText(FORM_Path)) 
      { 
       line = streamReader.ReadLine(); 
      } 
      } 

但我總是得到一個錯誤 - 文件不存在。我如何解決文本文件路徑中的問題。

+0

相對路徑無效。你應該給你想要讀取的文件的完整路徑 – Patel

+0

是你的文件夾在同一級別的應用程序? – NoviceProgrammer

+0

亞......我使用硬編碼路徑也仍然是相同的問題 – neel

回答

0

您正試圖給出相對路徑而不是物理路徑。如果您可以使用asp.net應用使用Server.Mappath

string FORM_Path = Server.MapPath("~/FormData/Login.txt"); 

如果文本文件是在執行文件夾中,然後就可以使用AppDomain.BaseDirectory

string FORM_Path = AppDomain.CurrentDomain.BaseDirectory + "FormData\\Login.txt"; 

如果無法使用一些基本的路徑,那麼你可以給出完整的路徑。

+0

但我有一個錯誤名稱服務器在當前上下文中不存在 – neel

+0

這是一個Windows應用程序 – neel

+0

我已更新我的答案。 – Adil

1

確保將您的文件屬性設置爲將文件複製到輸出目錄。然後,您可以使用以下行來獲取文本文件的完整路徑:

string FilePath = System.IO.Path.Combine(Application.StartupPath, "FormData\Login.txt"); 
+0

但在我的上下文中不存在name應用程序 – neel

+0

在代碼的頂部添加'using System.Windows.Forms',或者在上面的代碼中簡單地用'System.Windows.Forms.Application'替換'Application'。 – dotNET

0

您的路徑格式不正確。使用@".\FormData\Login.txt"什麼,而不是你有使用相對路徑

+0

不能正常工作........... – neel

+0

打開命令提示符並調用目錄「您的路徑」​​。你的文件應該打印出來。 – evpo

0

避免。請考慮使用Path class中的方法。

  1. Path.Combine
  2. Path.GetDirectoryName

第1步:獲取可執行

var path = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath; 

步驟2的絕對路徑:獲得工作目錄

var dir = Path.GetDirectoryName(path); 

第3步:建立新路徑

var filePath = Path.Combine(dir , @"FormData\Login.txt");