192.168.60.32
- FTP 라이브러리 활용
- 비밀번호 입력 -> 조합해서 넣어보기
- 비밀번호에 0 이 없다면 "1"과 "0001"를 구분할 필요 없지만...
import java.io.File;
import java.util.Scanner;
import it.sauronsoftware.ftp4j.FTPClient;
import it.sauronsoftware.ftp4j.FTPFile;
//비밀번호 입력말고 조합해서
public class Main {
public static void main(String[] args) {//main에서는 드로우 하지 말것
Scanner sc = new Scanner(System.in);
FTPClient client = new FTPClient();
while(true) {
System.out.println("===FTP Client Program===");
System.out.println("1. Connect FTP Server");
System.out.println("2. Exit Program");
System.out.print(">>>");
String input = sc.nextLine();
try {
if(input.contentEquals("1")) {
System.out.println("input url");
System.out.print(">>>");
String url = sc.nextLine();
client.connect(url);
System.out.println("input port");
System.out.print(">>>");
String port = sc.nextLine();
System.out.println("try to connect : "+url+"(port : "+port+")");
System.out.println("input id");
System.out.print(">>>");
String id = sc.nextLine();
//System.out.println("input password");
//System.out.print(">>>");
//String password = sc.nextLine();
String password = null;
pw:for(int i=0;i<10;i++){ //비번 4자리 조합 0000~9999
for(int j=0;j<10;j++) {
for(int k=0;k<10;k++) {
for(int h=0;h<10;h++) {
password = Integer.toString(i)
+Integer.toString(j)
+Integer.toString(k)
+Integer.toString(h);
try {
client.login(id, password);
break pw; //로그인 성공시 다음, 실패시 재조합
}catch(Exception e) {
System.out.println(password);
e.printStackTrace();
}
}
}
}
}
System.out.println("Login Success");
while(true) {
System.out.println("1. Upload File");
System.out.println("2. Download File");
System.out.println("3. Disconnect FTP Server");
System.out.println("4. Delete File");
System.out.print(">>>");
String input2 = sc.nextLine();
if(input2.contentEquals("1")) {
try {
System.out.println("input upload file name");
System.out.print(">>>");
String upload = sc.nextLine();
client.upload(new java.io.File(upload));
}catch(Exception e) {
e.printStackTrace();
}
continue;
}else if(input2.contentEquals("2")) {
try {
FTPFile[] list = client.list();
for(int i=0;i< list.length; i++) {
System.out.println("파일명 : "+list[i].getName()+" 사이즈 : "+list[i].getSize());//파일리스트 출력
}
System.out.println("input remoteFileName");//받을 파일 이름
System.out.print(">>>");
String remoteFileName = sc.nextLine();
System.out.println("input localFile");// 저장할 이름
System.out.print(">>>");
String localFile = sc.nextLine();
client.download(remoteFileName, new File(localFile));//경로 안쓰면 프로젝트 폴더에 저장
//참조자료형 > 인스턴스 생성하고 주소값 입력해야
//파일 인코딩 ANSI로 저장, 내용이 있어야 전송
System.out.println("Success! F5를 눌러 확인하세요.");
}catch(Exception e) {
e.printStackTrace();
}
continue;
}else if(input2.contentEquals("3")) {
client.disconnect(true);
System.out.println("Disconnect FTP Server");
continue;
}else if(input2.contentEquals("4")) {
try {
FTPFile[] list = client.list();
for(int i=0;i< list.length; i++) {
System.out.println("파일명 : "+list[i].getName()+" 사이즈 : "+list[i].getSize());//파일리스트 출력
}
System.out.println("input Delete FileName");
System.out.print(">>>");
String Delete = sc.nextLine();
client.deleteFile(Delete);
System.out.print("삭제완료");
}catch(Exception e) {
e.printStackTrace();
}
continue;
}else {
System.out.println("메뉴를 다시 확인해 주세요.");
}
}
}else if (input.contentEquals("2")) {
System.out.println("프로그램 종료");
System.exit(0);
}else {
System.out.println("메뉴를 다시 확인해 주세요.");
}
}catch(Exception e) {
e.printStackTrace();
}
}
}
}
뮤직플레이어
http://www.javazoom.net/javalayer/documents.html
Java MP3 Links - Documentation
- API Documentation - JLayer-based projects jlGui - MP3 player, WinAmp clone. MP3SPI - MP3 plugin for J2SE. JLayer C# - C# port of JLayer. Plaberbu - Karaoke MP3 player. jAmp - Another WinAmp clone. Human iPod - Halloween funny contest. KJ Player - Cross-f
www.javazoom.net
import java.io.FileInputStream;
import java.util.Scanner;
import javazoom.jl.player.Player;
public class Main {
public void Play() {
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("노래를 선택하세요.");
System.out.println("1. 너를만나");
System.out.println("2. 아무노래");
System.out.println("3. If the world was ending");
System.out.print("선택 > ");
String input = sc.nextLine();
if(input.contentEquals("1")) {
try {
FileInputStream fis = new FileInputStream("D:\\디지털컨버전스2월\\새 폴더\\Library-Jlayer\\폴킴-너를만나.mp3");
Player playMp3 = new Player(fis);
playMp3.play();
} catch (Exception e) {
System.out.println(e);
}
}else if(input.contentEquals("2")) {
try {
FileInputStream fis = new FileInputStream("D:\\디지털컨버전스2월\\새 폴더\\Library-Jlayer\\ZICO-아무노래.mp3");
Player playMp3 = new Player(fis);
playMp3.play();
} catch (Exception e) {
System.out.println(e);
}
}else if(input.contentEquals("3")) {
try {
FileInputStream fis = new FileInputStream("D:\\디지털컨버전스2월\\새 폴더\\Library-Jlayer\\If The World Was Ending.mp3");
Player playMp3 = new Player(fis);
playMp3.play();
} catch (Exception e) {
System.out.println(e);
}
}
}
}
https://javaee.github.io/javamail/docs/api/
JavaMail API documentation
javaee.github.io
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class MainEntry {
static final String FROM = "okeydoke2@naver.com";
static final String FROMNAME = "hk";
static final String TO = "mystark@hanmail.net";
static final String SMTP_USERNAME = "okeydoke2";
static final String SMTP_PASSWORD = "";
static final String HOST = "smtp.naver.com";
static final int PORT = 25; // 25말고 다른 번호는 보안 어쩌구~!
static final String SUBJECT = "메일 제목";
static final String BODY = String.join(
System.getProperty("line.separator"),
"<h1>메일 내용</h1>",
"<p>이 메일은 자바로 보낸 메일입니다!</p>."
);
public static void main(String[] args) throws Exception {
Properties props = System.getProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.port", PORT);
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.auth", "true");
Session session = Session.getDefaultInstance(props);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(FROM, FROMNAME));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(TO));
msg.setSubject(SUBJECT);
msg.setContent(BODY, "text/html;charset=euc-kr");
Transport transport = session.getTransport();
try {
System.out.println("Sending...");
transport.connect(HOST, SMTP_USERNAME, SMTP_PASSWORD);
transport.sendMessage(msg, msg.getAllRecipients());
System.out.println("Email sent!");
} catch (Exception ex) {
ex.printStackTrace();
} finally {
transport.close();
}
}
}
저장소 형태의 클래스, VO , DTO
//1)저장소 형태의 클래스 VO(밸류오브젝트 값개체) 또는 DTO(데이터 트랜스퍼 오브젝트)
//2)막강한 기능의 라이브러리
public class Student {
private String id;
private String name;
private int kor;
private int eng;
private int math;
public Student() {}
public Student(String id, String name, int kor, int eng, int math) {
super();
this.id = id;
this.name = name;
this.kor = kor;
this.eng = eng;
this.math = math;
}
public int getSum() {
return this.kor + this.eng + this.math;
}
public double getAvg() {
return getSum() / 3.0;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getEng() {
return eng;
}
public void setEng(int eng) {
this.eng = eng;
}
public int getMath() {
return math;
}
public void setMath(int math) {
this.math = math;
}
}
import java.util.Scanner;
//변수 :한개씩만 넣을 수 있음
//배열 :여러데이터 담을 수 있지만 자료형이 같아야
//(C언어)구조체 : 서로 다른 자료형을 묶을 수 있음, 단 기능을 묶을 수없다.
//클레스 : 데이터를 보관하는 저장소, 값과 기능을 묶어 저장
public class Main {//데이터를 보관하는 용도로서의 클래스
public static void printStudent(Student std) {
System.out.println(std.getName()
+"\t"+std.getKor()
+"\t"+std.getEng()
+"\t"+std.getMath()
+"\t"+std.getSum()
+"\t"+std.getAvg()
);
}
public static void main(String[] args) {
// 학생정보
// 학번 / 이름 / 국어 영어 수학 점수
// String[] 학번 = new String[50];
// String[] 이름 = new String[50];
// 항목별 배열이 여러개일 경우 꼬일 수도...
Student[] stds = new Student[10]; // Student형 인스턴스 개수 0개
//배열의 주소를 저장할 공간, Student형 변수를 10개 생성
int id = 1001;
int index = 0; //학생 배열의 번호
Scanner sc = new Scanner(System.in);
while(true) {
try {
System.out.println(" ===== 학생 관리 시스템 ===== ");
System.out.println("1. 신규 정보 등록");
System.out.println("2. 학생 정보 조회");
System.out.println("3. 학생 정보 검색 (이름)");
System.out.println("4. 학생 정보 삭제 (학번)");
//인스턴스 자체가 사라져야함, 뒤의 값들이 땡겨져 덮어쓰기
System.out.println("5. 종료하기");
String menu = sc.nextLine();
if(menu.contentEquals("1")) {
System.out.print("학생 이름 : ");
String name = sc.nextLine();
System.out.print("국어 점수 : ");
int kor = Integer.parseInt(sc.nextLine());
System.out.print("영어 점수 : ");
int eng = Integer.parseInt(sc.nextLine());
System.out.print("수학 점수 : ");
int math = Integer.parseInt(sc.nextLine());
Student tmp = new Student(String.valueOf(id++),name,kor,eng,math); // "" + id++
//지역이 사라지면 지역변수 tmp 없어짐
stds[index++] = tmp; // 인스턴스 살아남음
//10칸 보다 더 입력되면 에러
}else if(menu.contentEquals("2")) {
System.out.println(" ===== 학생 정보 목록 ===== ");
System.out.println("이름\t국어\t영어\t수학\t합계\t평균");
for(int i =0; i< index; i++) {
printStudent(stds[i]);
}
}else if(menu.contentEquals("3")) {
System.out.print("검색할 학생 이름 : ");
String search = sc.nextLine();
boolean checkFlag = false;//플래그 기법
//반복문 안에서 검색하고자 하는 이름이 한번이라도 발견되는지 점검하는 변수
for(int i =0; i< index; i++) {
if(stds[i].getName().contentEquals(search)) { //문자열 비교!
System.out.println("이름\t국어\t영어\t수학\t합계\t평균");
printStudent(stds[i]);
checkFlag = true;
}
}
if(!checkFlag) {System.out.println("등록된 정보가 없습니다.");}
}else if(menu.contentEquals("4")) {
System.out.print("삭제할 학생 학번 : ");
String delect = sc.nextLine();
boolean checkFlag = false;
for(int i =0; i< index; i++) {
if(stds[i].getId().contentEquals(delect)) {
for(int j =i; j<index; j++) {
stds[j] = stds[j+1];
}
index--; // 삭제후 등록 불가문제 해결?
checkFlag = true;
}
}
if(!checkFlag) {System.out.println("삭제할 정보가 없습니다.");}
}else if(menu.contentEquals("5")) {
System.out.println("시스템을 종료합니다.");
System.exit(0);
}else {
System.out.println("메뉴를 다시 확인하세요");
}
}catch(Exception e) {
// e.printStackTrace();
}
}
}
}
'디지털 컨버전스 > JAVA' 카테고리의 다른 글
[Java] Collection Framework, ArrayList, Generic, Foreach (0) | 2020.02.20 |
---|---|
[Java] 객체 지향 중급 문법, 상속, override (0) | 2020.02.19 |
[Java] member field , Constructor, 정적 변수, 라이브러리, FTP (0) | 2020.02.17 |
[Java] Method , OOP (객체 지향 프로그램) , 정보은닉 , 접근제한자 (0) | 2020.02.14 |
[Java] Method (0) | 2020.02.13 |