2012-05-20 4 views
0

В моем приложении MVC Я пытаюсь открыть файл для чтения через StreamReader, путь, который я ему дал, заключается в сохранении относительного положения файла из папки bin:Не удалось получить правильный путь к файлу через StreamReader

TextReader tr = new StreamReader("Content/files/text/email.txt"); 

Но когда я бегу это я получаю эту ошибку над ним:

не удалось найти часть пути «C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ DevServer \ 10.0 \ Content \ файлы \ текст \ email.txt.

Это очень запутанно, поскольку я не знаю, как остановить его, чтобы остановить чтение пути из корневого каталога, но прочитать его из корневой папки приложения.

ответ

1

Вы должны это сделать, если вы говорите о применении WinForms.

var tr = new StreamReader(Path.Combine(Application.StartupPath, @"Content\files\text\email.txt")); 

UPDATE: Вам не нужно StreamReader для веб-приложений. Это очень просто:

string text = new WebClient().DownloadString("URL_TO_WHEREEVER"); 
+0

, можете ли вы рассказать, какой каталог в Include inorder использовать 'Application.StartupPath' .. Я пытаюсь использовать' using System. Windows.Forms', но его не обнаружено и не указана ошибка? – Maven

+0

Какая ошибка? Класс 'Application' является частью *' System.Windows.Forms' [namespace] (http://msdn.microsoft.com/en-us/library/system.windows.forms.application.startuppath.aspx) –

+0

, когда Я 'использую System.Windows.Forms' его отображение '.Windows' в красном, поскольку его не найдено. – Maven

1

Использование Application.StartupPath или Directory.GetCurrentDirectory

как

TextReader tr = 
    new StreamReader(
     Path.Combine(Directory.GetCurrentDirectory(), 
         "Content", "files", "text", "email.txt") 
     ); 
+2

И использовать Path.Combine – usr

+1

@usr, +1 к обоим вы Любите вы Path.Combine! – kenny

+1

@usr: Да, правильно –

Смежные вопросы