2013-04-18 6 views
-6

Может ли кто-нибудь предложить мне лучший способ увидеть, существует ли файл? File.Exists не работает для меня.Как определить, существует ли файл?

string abc = "me_label.deploy"; 
File.Exists(abc) 

Файл, abc, исходит от Streamreader.ReadLine();.

Я даже использовал полный путь. Я не хочу включать файлы в свой проект. Если я включу его в свой проект, он работает нормально.

Мой код:

FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("[email protected]/"; + ab); 
//ab=newfolder/newfolder1 
ftp.Credentials = new NetworkCredential(user, pass); 
ftp.Method = WebRequestMethods.Ftp.ListDirectory; 
StreamReader sr = new StreamReader(ftp.GetResponse().GetResponseStream()); 
StringBuilder result = new StringBuilder(); 
string abc = sr.ReadLine(); 
while (abc != null) 
{ 
    result.Append(abc); 
    //abc=file 
    result.Append("\n"); 
    if (File.Exists(ab+abc)) 
    { 
     //file 
    } 
} 
+0

Почему файл. Не работает для вас? Можете ли вы пройти и увидеть правильный путь? –

+0

Вы уверены, что файл существует? – MyCodeSucks

+1

'File.Exists не работает для меня'. Это детерминированная функция. Не работает случайным образом. – I4V

ответ

5

Любой относительный путь в .NET является по умолчанию относительно bin/Debug подкаталог вашего проекта. Итак, если me_label.deploy находится в этой папке, ваша программа не сможет ее найти. Если вы включите его, он будет скопирован в эту папку, а затем он будет работать.

Но вместо этого вы должны сделать абсолютный путь. Используйте методы из Path class.

string filename = "me_label.deploy"; 
string basePath = @"C:\My Documents\"; 
string absolutePath = Path.Combine(basePath, filename); 
// C:\My Documents\me_label.deploy 
Console.WriteLine(File.Exists(absolutePath)); 
+0

+1. Но я бы заменил 'Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments)' для 'basePath'. – ispiro

+0

Его работа прекрасна, если я включаю его в свой проект, я хочу, чтобы он загружался недавно, я не хочу добавлять эти файлы в свой проект. Я хочу, чтобы он проверял только ссылку ftp. – user2155670

+0

@ispiro Я согласен, но это был просто случайный путь с моей головы. Я не знаю, где OP сохранил этот файл. – Virtlink

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