일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Oracle
- 7월 공모주 청약 일정
- MYSQL
- codeigniter
- 공모주 청약 일정
- SQL
- Eclipse
- php
- IPO
- css
- 주식
- java
- 코드이그나이터
- 리눅스
- 오라클
- 자바스크립트
- 공모주
- linux
- 주식 청약 일정
- 제이쿼리
- 맥
- jquery
- Stock
- Stock ipo
- 주식 청약
- 자바
- JavaScript
- html
- 공모주 청약
- 6월 공모주 청약 일정
- 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 |