Languages/C#2013. 2. 26. 18:49

프로젝트마다 FTP 관련 기능들을 사용할 때가 있는데요.

기본 메소드 기능들과 이 기능들을 활용하여 좀 더 다양한 기능들 구현할 때가 많았습니다.

( 디렉토리 존재여부, 경로대로 디렉토리 생성, 디렉토리 모두 삭제, 디렉토리 다운로드, 여러 파일 업로드 등.. )

 

그래서 이러한 기능들을 쉽게 사용할 수 있도록 클래스를 만들어 보았습니다.

 

 

중요 클래스는 Ftp 클래스입니다.

그 외에 관련된 필요 클래스들도 위에 보이는 것처럼 여러 개가 있습니다.

 

아래 그림은 Ftp 클래스의 메소드와 프로퍼티 이벤트입니다.

 

메소드는 WebRequestMethods.Ftp 의 기본 메소드들과 이를 응용한 확장 메소드들이 있습니다.

메소드명을 보시면 어떤 역활을 하는지 알 수 있고, summary 를 달아놔서 사용 시 어렵지는 않으실 겁니다.

 

메소드들 중 업로드와 다운로드 메소드명 뒤에 WC 라고 붙는 메소들이 있는데요.

WebClient 를 이용해서 파일 업로드, 다운로드를 진행하는 메소드이고,

일반적인 메소드는 FtpWebRequest 를 사용하여 진행합니다.

 

프로젝트시 마다 항상 필요성을 느껴서 만들게 된 메소드가 두 가지 있습니다.

DownloadDirectoryAsync( WC ) 메소드는 FTP 에 있는 폴더를 통째로 다운로드 받고,

UploadFileListAsync( WC ) 메소드는 FtpUploadDirectory 리스트를 매개변수로 받아

파일들을 모두 업로드 합니다.

 

업로드 다운로드시 필요 이벤트들을 만들어 놓았습니다.

DownloadDirectoryChanged 는 다운로드는 되는 파일 변경시 발생하고,

UploadFileListChanged 는 업로드 되는 파일 변경시 발생합니다. 

 

소스를 첨부하니 디버깅에 사용하시고, 출처는 밝혀주시면 감사하겠습니다.

사용하시면서 발생하는 문제점들에 대해서 의견 주시면 반영하도록 하겠습니다. 

 

 


 

 

FTP.zip

 

 


'Languages > C#' 카테고리의 다른 글

ClickOnce Custom BootStrapper  (0) 2015.12.01
[ C# ] Change Audio Device  (0) 2013.08.06
[ C# ] Object To Byte, Byte To Byte  (0) 2013.02.26
[ C# ] Struct To Byte, Byte To Struct  (0) 2012.08.17
[ C# ] Win32 API MouseEvent  (8) 2010.12.07
Posted by 열ㅇl
Languages/C#2013. 2. 26. 18:44

object를 byte 로, byte를 struct로 변환하는 코드입니다. 

 

public static object ByteToObject(byte[] buffer)

{

    try

    {

        using (MemoryStream stream = new MemoryStream(buffer))

        {

            BinaryFormatter binaryFormatter = new BinaryFormatter();

            stream.Position = 0;

            return binaryFormatter.Deserialize(stream);

        }

    }

    catch (Exception exception)

    {

        Console.WriteLine(exception.ToString());

    }

 

    return null;

}

 

public static byte[] ObjectToByte(object obj)

{

    try

    {

        using (MemoryStream stream = new MemoryStream())

        {

            BinaryFormatter binaryFormatter = new BinaryFormatter();

            binaryFormatter.Serialize(stream, obj);

            return stream.ToArray();

        }

    }

    catch (Exception exception)

    {

        Console.WriteLine(exception.ToString());

    }

 

    return null;

}

'Languages > C#' 카테고리의 다른 글

[ C# ] Change Audio Device  (0) 2013.08.06
[ C# ] FTP  (4) 2013.02.26
[ C# ] Struct To Byte, Byte To Struct  (0) 2012.08.17
[ C# ] Win32 API MouseEvent  (8) 2010.12.07
[ C# ] C# FTP Download  (3) 2010.07.21
Posted by 열ㅇl
Window/Surface2012. 9. 18. 20:29

 

Surface 개발 ( 현재는 Pixelsense 로 이름이 변경되었죠. ) 을 하다보면

기본적으로 제공되는 SurfaceScrollViewer 에서는 Scroll은 잘 되지만

Scale, Rotate, Drag 과 같은 Transform 관련 조작들이 되지 않습니다.

 

현재 스마트폰들에서는 당연히 되는 기능이 되지 않아 UX 적인 부분에서 매우 아쉬운 점입니다.

하지만 이미 스마트폰에 젖어 있는 사용자들에게 꼭 필요한 기능이기 때문에

예전에 하나의 마우스로 멀티터치처럼 Scale, Rotate, Drag 를 할 수 있도록

작성해 보았던 소스를 Surface SDK 환경에 맞게 조금 수정하여 Behavior를 만들어 보았습니다.

http://shine10ee.blog.me/10079192174

 

 

- IsOnlyContentScale : SurfaceScorllViewer의 Content 사이즈를 변경 여부 속성,

                                     false 일 경우 SurfaceScrollViewer의 사이즈가 변경 됩니다. ( default : false )

- CanScale : 사이즈 변경 속성, Ture일 경우 SurfaceScrollViewer의 사이즈를 변경합니다.

- CanRotate : 회전 속성, True일 경우 SurfaceScrollViewr를 회전시킵니다.

                      IsOnlyContentScale이 True일 경우 적용되지 않습니다.

- CanDrag : 드래그 속성, True 일 경우 SurfaceScrollViewer의 위치를 변경합니다.

- MinScale : 최소 사이즈 속성, MaxScale 보다 클 경우 MaxScale 로 설정합니다.

- MaxScale : 최대 사이즈 속성, MinScale 보다 작을 경우 MinScale 로 설정합니다.

 

[ IsOnlyContentScale : True, CanScale : True ]

 

 

[ IsOnlyContentScale : False, CanScale : True ]

 

 

[ CanRotate : True ]

 

 

 

 

[ CanScale : True, CanRotate : True ]

 

 

 

 

[ CanDrag : True ]

 

 

 

 

 

[ CanScale : True, CanRotate : True, CanDrag : True ]

 

 

SurfaceScrollViewerBehavior.zip

 

'Window > Surface' 카테고리의 다른 글

[ WPF ] TagVisualization  (0) 2010.07.15
[ WPF ] Surface LibraryStack & LibraryBar - Drag and Drop  (0) 2010.07.10
[ WPF ] Surface LibraryStack & LibraryBar  (0) 2010.07.04
[ WPF ] Surface ScatterView  (0) 2010.07.03
[ WPF ] Surface SDK 예제  (0) 2010.07.03
Posted by 열ㅇl