2010-02-18 127 views
4

我想从本地目录中读取文本文件,我将文本文件添加到了我的c#解决方案中,因此它会在部署时被复制..但是如何打开它?我一直在寻找,但所有的例子假设我有一个C:\ TextFile.txt的:从本地文件夹中读取文本文件

我尝试了读取文件

if (File.Exists("testfile.txt")) 
{ 
    return true; 
} 

这没有奏效。然后我试过:

if (File.Exists(@"\\TextConsole\testfile.txt")) 
{ 
    return true; 
} 

但仍然不会打开它..任何想法??

+0

的TESTFILE.TXT是在解决方案的目录。它不会被复制到构建目录。你将不得不知道它的文件路径。 – 2010-02-18 20:12:10

回答

21

仅仅因为你添加到您的解决方案,并不意味着该文件被放置到你的输出build目录的检查后。如果您想使用相对路径,请确保您的TextFile在构建期间被复制到输出目录。要做到这一点,在解决方案资源管理器去的文本文件的属性并设置Copy to Output DirectoryAlwaysCopy if newer

然后你可以使用

File.Open("textfile.txt"); 
+0

伟大的这为我工作! – 2011-08-01 18:30:12

+1

确保在项目属性窗格中将“复制到输出目录”设置为true。这会将文件复制到读取访问将发生的bin目录。 – 2014-10-17 14:11:10

3

你需要使用下列情况之一,你已经取得

string path = @"\\TextConsole\testfile.txt"; 
if (File.Exists(path)) 
{ 
    FileStream fileStream = File.OpenRead(path); // or 
    TextReader textReader = File.OpenText(path); // or 
    StreamReader sreamReader = new StreamReader(path); 
} 
+0

它不会找到该文件,因为它不存在于他的构建目录中。 – 2010-02-18 20:15:36

+0

在我眼中,正确的方法是'string txtPath = Path.Combine(Environment.CurrentDirectory,“testfile.txt”);'。 – Bobby 2010-02-18 20:15:56

0

如果该文件确实是在c:\textfile.txt,你可以找到像这样:

if (File.Exists(@"c:\testfile.txt")) 
{ 
    return true; 
} 

但是,你应该使用Path.Combine建立一个嵌套的文件路径和DriveInfo与驱动器的详细工作。

2

本示例使用StreamReader类的ReadLine方法逐个读取文本文件的内容为一个字符串。每个文本行都存储在字符串行中并显示在屏幕上。

int counter = 0; 
    string line; 

// Read the file and display it line by line. 
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt"); 

while((line = file.ReadLine()) != null) 
{ 
    Console.WriteLine (line); 
    counter++; 
} 

file.Close(); 

// Suspend the screen. 
Console.ReadLine(); 

参考http://msdn.microsoft.com/en-us/library/aa287535%28v=vs.71%29.aspx