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#' 카테고리의 다른 글
C# FTP 폴더 생성 (FTP remote create directory) (0) | 2018.09.21 |
---|---|
C# xml파일 읽기 (0) | 2018.09.14 |
C# FileSystemWatcher 파일 감시 모니터링 (0) | 2018.09.12 |