일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 공모주 청약
- 자바
- 주식
- MYSQL
- 공모주 청약 일정
- 주식 청약 일정
- 자바스크립트
- JavaScript
- 리눅스
- linux
- php
- jquery
- SQL
- 맥
- 7월 공모주 청약 일정
- java
- 코드이그나이터
- codeigniter
- 6월 공모주 청약 일정
- html
- IPO
- Eclipse
- css
- 오라클
- Stock ipo
- Oracle
- 주식 청약
- 공모주
- Stock
- 제이쿼리
- Today
- Total
개발자의 끄적끄적
[java] SFTP 사용방법 (jsch 라이브러리 사용) 본문
[java] SFTP 사용방법 (jsch 라이브러리 사용)
/**
* 서버와 연결에 필요한 값들을 가져와 초기화 시킴
*
* @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();
channelSftp = (ChannelSftp) channel;
} catch (JSchException e) {
e.printStackTrace();
}
}
/** create by Junho
* 헤당 경로가 없으면 mkdir 하는 함수 리턴값 : fullpath
* @param path
* @return
* @throws SftpException
*/
public String mkdirDir(String path) throws SftpException {
String[] pathArray = path.split("/");
String currentDirectory = channelSftp.pwd();
String totPathArray = "";
for(int i =0; i< pathArray.length; i++) {
totPathArray += pathArray[i] + "/";
String currentPath = currentDirectory+ "/" + totPathArray;
try {
channelSftp.mkdir(currentPath);
channelSftp.cd(currentPath);
} catch (Exception e) {
channelSftp.cd(currentPath);
}
}
return currentDirectory+ "/" + totPathArray;
}
/**
* 단일 파일을 업로드
*
* @param file
* 저장시킬 파일
* @param dir
* 저장시킬 주소(서버)
*/
public boolean uploadFile(MultipartFile file, String fileName, String dir) {
boolean result = true;
InputStream in = null;
try {
//fileName = URLEncoder.encode(fileName,"EUC-KR");
in = file.getInputStream();
channelSftp.cd(dir);
channelSftp.put(in, fileName);
} catch (Exception e) {
e.printStackTrace();
result = false;
} finally {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 단일 파일 다운로드
*
* @param dir
* 저장할 경로(서버)
* @param downloadFileName
* 다운로드할 파일
* @param path
* 저장될 공간
*/
public boolean download(String dir, String downloadFileName, String path) {
boolean result = true;
InputStream in = null;
FileOutputStream out = null;
try {
channelSftp.cd(dir);
in = channelSftp.get(downloadFileName);
} catch (SftpException e) {
e.printStackTrace();
result = false;
}
try {
out = new FileOutputStream(new File(path));
int data;
byte b[] = new byte[2048];
while((data = in.read(b, 0, 2048)) != -1) {
out.write(b, 0, data);
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
result = false;
} finally {
try {
out.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
/**
* 서버와의 연결을 끊는다.
*/
public void disconnection() {
channelSftp.quit();
}
'개발 > java & jsp' 카테고리의 다른 글
[java] 소수점 고정시키기 (0) | 2020.03.02 |
---|---|
[자바] SFTP 파일업로드 디렉토리 생성 (0) | 2020.03.01 |
[java] 리스트돌릴땐 무조건 foreach를 사용하자 [펌] (0) | 2020.02.29 |
[java] 자바(java)로 만든 FTP와 SFTP Client 통합 프로그램 [펌] (0) | 2020.02.28 |
[java] [Eclipse]java프로젝트에 jar파일 추가하기, jar파일 상대경로로 넣기 [펌] (0) | 2020.02.27 |