2013-11-27 123 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");