기본 콘텐츠로 건너뛰기

Java SFTP 사용

1. jar(jsch-0.1.54.jar) 다운

http://www.jcraft.com/jsch/

2. 소스 예제

파일업로드 예시.
---------------------------------------------------------
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

//    private 로 선언해줌.
private Session session = null;
private Channel channel = null;
private ChannelSftp channelSftp = null;

//    sftp 연결.
 /**
     * 서버와 연결에 필요한 값들을 가져와 초기화 시킴
     * @param host
     *            서버 주소
     * @param userName
     *            접속에 사용될 아이디
     * @param password
     *            비밀번호
     * @param port
     *            포트번호
     */
    public void init(String host, String userName, String password, int port) {
        JSch jsch = new JSch();
        try {
            session = jsch.getSession(userName, host, port);
            session.setPassword(password);


            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            session.setConfig(config);
            session.connect();

            channel = session.openChannel("sftp");
            channel.connect();
        } catch (JSchException e) {
            e.printStackTrace();
        }
        channelSftp = (ChannelSftp) channel;
    }

//    파일 업로드.
    public void upload(String dir, File file) {

        FileInputStream in = null;
        try {
            in = new FileInputStream(file);
            channelSftp.cd(dir);
            channelSftp.put(in, file.getName());
        } catch (SftpException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

//    연결끊기.
    public void disconnection() {
        channelSftp.quit();
    }


//    호출.
try{
               String host = "***.***.***.***;
                String userName = "test";
                String password = "1234567890";
                int port = ***;
                String sftpdir = ""; //접근할 폴더가 위치할 경로
             
                init(host, userName, password, port);
                upload(sftpdir, new File());
                disconnection();
}
catch (Exception e){
}

 /**
     * 하나의 파일을 다운로드 한다.
     *
     * @param dir
     *            저장할 경로(서버)
     * @param downloadFileName
     *            다운로드할 파일
     * @param path
     *            저장될 공간
     */
    public void download(String dir, String downloadFileName, String path) {
        InputStream in = null;
        FileOutputStream out = null;
        try {
            channelSftp.cd(dir);
            in = channelSftp.get(downloadFileName);
        } catch (SftpException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            out = new FileOutputStream(new File(path));
            int i;

            while ((i = in.read()) != -1) {
                out.write(i);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                out.close();
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }

댓글

이 블로그의 인기 게시물

UltraEdit Professional Version 18.20.0.1014 라이센스 키 넣기

Step 1: unpack rar archive      Step 2: run the setup   Step 3: Use the given keygen to activate    Add the line   127.0.0.1 licensing.ultraedit.com         to your %WINDOWS%\system32\drivers\etc\hosts file                 Enter any data for license-id and password (license-id must be a         number)                 Choose Offline activation and generate corresponding activation         codes for your user codes   Step 4: Enjoy and Support Developers, Buy It, They Deserved It!

gsjava WeGuardia™ SSLplus 특징(퓨쳐시스템 => 퓨쳐텍정보통신으로 이관)

☎ 문의 :  010-3240-0041 김성은 소장 01.   웹기반   인터페이스   제공 ……. –  웹기반   인터관리   및   사용   편리성을   제공 ……. –  실시간 터널수, 실시간 위반 사용자 등   복잡   정교한   정보   표시를   구현 02.   사용자를   위한   다양한   클라이언트   제공 ……. –  윈도우 , IOS,MAC, 안드로이드   및   리눅스   클라이언트   제공 ……. –  항시   암호화된   네트워크   연결성 ,  보안성   및   단말  Compliance  등  NAC  기능 03.   사용자   친화적   앱   목록 ……. – OS 별 앱 목록을 등록후 사용 가능 ……. –  사용자는   접속   정보   기억   불필요 ,  접속   후 ,  앱   목록에서   원하는   앱을   선택하여   클릭 ……. –  기업   필수   앱   배포   가능 04.   효율적인  VPN Tunneling ……. – Non Split Tunneling 과  Split Tunneling 을   지원 ,  업무   트래픽과   일반   인터넷   트래픽   분리   처리   가능 ……. – WeGuardia™SSLplus  보안설정을 ...