2011-01-04 5 views
0

я использую метод для создания папки на FTP я хочу получить исключение, если папка уже exsists, как сделать его более написать существующую папкуСоздать папку на FTP

using System; using System.Net; 

class Test { 
    static void Main() 
    { 
     WebRequest request = WebRequest.Create("ftp://host.com/directory"); 
     request.Method = WebRequestMethods.Ftp.MakeDirectory; 
     request.Credentials = new NetworkCredential("user", "pass"); 
     using (var resp = (FtpWebResponse) request.GetResponse()) 
     { 
      Console.WriteLine(resp.StatusCode); 
     } 
    } } 

это «возвращенной ошибку удаленного сервера (550) file not found "

ответ

3

Ну,« я хочу получить исключение, если папка уже существует »и« как сделать его перезаписи существующей папки »- это два противоположных вопроса.

Во всяком случае, я только что реализовал код, чтобы сделать это на днях. Просто убедитесь, что каталог уже существует. И тогда ответьте на это. Нет смысла пытаться создать каталог, который уже существует.

И если вам нужно каким-то образом перезаписать его, удалите существующий каталог перед созданием нового.

Вы можете увидеть код, который я написал для этого в статье An FtpClient Class and WinForm Control, хотя он просто перезапишет существующий контент.

+0

как проверить, существует ли она уже? –

+0

У меня нет доступа к коду, который я использовал прямо сейчас, но я думаю, что я использовал что-то вроде WebRequestMethods.Ftp.ListDirectory и проверял на наличие ошибки. Если ошибки не было, я мог предположить, что каталог существует. –

+0

Да, попробуйте перечислить каталог в блоке try и если webException.Message.Contains («550»), то каталог не существует –

0

Вы не можете перезаписать существующую папку ... Я даже не знаю, какая польза может быть.

Короче говоря, вам нужно сделать исключение и решить, что делать. Либо оставить его на месте (в конце концов, он уже существует ...), либо вам нужно удалить существующую папку и попытаться ее воссоздать.

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

+1

Забавно, что он сообщает, что он получает ошибку «файл не найден». –

+0

@Klaus: Да, я подумал, что это было немного странно – NotMe

0

Возможно, вам захочется рассмотреть некоторые существующие ftp-библиотеки. Я использовал это и имел большой успех. Это FTP-клиентская библиотека, которая обеспечивает высокоуровневые функции FTP для FTPrequest в .NET Framework 2.0.

У этого есть API для проверки наличия каталога и создания каталога.

Код @http://ftpclient.codeplex.com/

Статья @http://www.codeproject.com/KB/IP/FtpClient.aspx

1

Я использую этот FUNC в растворе

private void createFolder(string ftpUName, string ftpPWord) 
    { 
      WebRequest ftpRequest = WebRequest.Create("ftp://mrhotro.ad/new_sc"); 
      ftpRequest.Method = WebRequestMethods.Ftp.MakeDirectory; 
      ftpRequest.Credentials = new NetworkCredential(ftpUName, ftpPWord); 
    } 
+0

почему имя папки не в args? – qmor

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