C#에서 using System.Net 를 사용하면 

FTP 접속해서 폴더 유무 확인이 가능합니다.

 

단계는

1. FTP로 접속할 IP, Port, 생성할 폴더명으로 경로를 파라미터로 WebRequest 를 초기화 해줍니다.

2. FTP로 접속을 위한 ID, Password 로 권한을 설정 하구요

3. FtpWebRequest 기능 중 해당 폴더의 하위 파일 목록을 가져오는(ListDirectory)를 대입 합니다.
   (해당 폴더의 하위 파일List를 가져와야 하는데 폴더 자체가 없으면 예외로 빠지기 때문에 해당 폴더의 유무를 알 수 있습니다.)

4. 그 다음 GetResponse() 함수로 FTP로 부터 결과 확인

 

4번 실행 후 예외로 빠지게 된다면

경로 마지막 폴더명 뒤에 / 표시를 안한경우 또는

이미 해당 폴더명으로 존재하거나 ID, Passsword 가 틀린 경우가 많으니 다시 한번 확인해 보세요.

 

# 아래 코드의 절반은 예외처리 내용이기 때문에 실제 기능 구현 코드는 7줄 정도 입니다.

 

코드 예시

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Net;

namespace WindowsFormsApplication2
{
    public class test
    {
        public void checkDirectoryExists()
        {
            string directory = "ftp://???.???.???.??:21/폴더1/";   //ftp://ip:포트/폴더명/; 

            FtpWebRequest requestFTPUploader = (FtpWebRequest)WebRequest.Create(directory);
            requestFTPUploader.Credentials = new NetworkCredential("ID", "PW");             //id, password

            var request = requestFTPUploader;
            request.Method = WebRequestMethods.Ftp.ListDirectory;

            try
            {
                using (var result = (FtpWebResponse)request.GetResponse())
                {
                    result.Close();  //정상 종료
                }
            }
            catch (WebException e)
            {
                FtpWebResponse response = (FtpWebResponse)e.Response;

                if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
                {
                    Console.WriteLine("Does not exist");
                }
                else if (e.Status == WebExceptionStatus.ProtocolError)
                {
                    Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
                    Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
                }
                else
                {
                    Console.WriteLine("Error: " + e.Message);
                }
            }

        }

    }
}

 

 

해당 폴더가 존재한다면 GetResponse() 에서 True 를 반환하기 때문에

True 인 경우 FTP네트워크를 닫아 주고 해당 기능 구현을 마무리 했습니다.

 

FTP 폴더 유무 확인은 이런식으로 확인 가능하구요

반대로 FTP 폴더 생성을 하고 싶다면 아래 링크로 고고!

C# FTP 폴더 생성

 

'프로그래밍 > C#' 카테고리의 다른 글

C# FTP 폴더 생성 (FTP remote create directory)  (0) 2018.09.21
C# xml파일 읽기  (0) 2018.09.14
C# FileSystemWatcher 파일 감시 모니터링  (0) 2018.09.12

+ Recent posts