본문 바로가기

Programming Practice/Java

Socket File transfer Client 에서 Server로 파일을 전송한다. 파일 이외 다른 데이터는 전송하지 않기 때문에 DataInputStream/DataOutputStream 이 아닌 기본적인 InputStream/OutputStream을 사용한다. 1. client 소스 import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; public class ClientExample { public static void main(String[] args) { OutputStream os = null; FileInputStream fis = null; .. 더보기
DataInputStream/DataOutputStream 1. FillterStream: data 변환 - 암축, 암호화, 다른 format으로 변환: DataInputStream/DataOutputStream 은 FilterStream 으로 다른 format으로 변환한다. DataInputStream inputstream → byte[] → Java primitive data type inputstream → 기존 byte[] 를 자르기 DataOutputStream Java primitive data type → byte[] → outputstream 기존 byte[] 를 자르기 → outputstream 2. DataInputStream1) 생성자 DataInputStream(InputStream in)Java primitive data type 을 re.. 더보기
memory static vs. stack vs. heap 메모리 영역 이용 주체 메모리 반환 방식 staticstatic 이 붙은 instance variables, method* 모든 objects에서 사용할 수 있음 (class명.변수, class명.method)java program 종료 시 stack method invocations, local variables method 가 실행완료되면, method 의 stack frame이 stack에서 사라진다. heap objects, instance variablesreference 변수의 메모리가 반환되면, Garbage Collector 가 object를 heap에서 정리함 cf. 변수 비교 변수 설명 instance variables class 내 선언되.. 더보기
여러 class의 각각의 method를 각각의 간격을 두고 실행하기 1. 기본 여러 class 별로 Thread를 만들고, Thread 내에서 method를 반복해서 수행 2. 사용 예시 1) 여러 class 의 interface 만들기 public interface ExecuteService { public int getPeriod(); public void execute(); } 2) interface를 implements 하는 여러 class 만들기 public class A implements ExecuteService { //1초 간격으로 수행 public int getPeriod() { return 1; } public void execute() { SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyyMM.. 더보기
DateUtil 1. 현재 날짜와 시분초 를 String으로 가져오기 SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat("yyyyMMddHHmmss"); String currentDate = yyyyMMddHHmmss.format(new Date()); 더보기
class 의 path 로 class 객체 만들기 1. 사용 사례 - class 의 path를 파라미터로 받아서 class 객체를 생성할 때 - 기본 사용 예시 (1) //1) class 경로 설정 (separator 를 . 으로 설정한다) - 실제 사용에서는 path를 파라미터로 받음 String path = "inheritanceTest.Tiger"; //2) class 일반 객체 생성 Class c = Class.forName(path); //3) 실제 class 객체 생성 Tiger tiger = (Tiger) c.newInstance(); - 실제 사용 예시 (2) : class 의 path를 파라미터로 받기 때문에 실제 class의 이름을 알기 힘들다. : 따라서 다형성을 이용해 상위 class 로 객체를 생성한다. 생성된 객체는 상위 cla.. 더보기
Annotation Type 사용 1. 작성 1) 생성 - eclipse : New - Annotation 2) 변수 구성 - 일반변수(); public @interface MessageType { public char kind(); public char id(); } 3) Annotation 구성 - class 또는 field 에 설정된 annotation 객체를 사용하기 위해서는 @Retention(RetentionPolicy.RUNTIME) - 사용 대상 annotation class @Target(ElementType.TYPE) field @Target(ElementType.FIELD) 2. class에 사용 1) 사용 - class 의 위에 @annotationtype명(변수1=값1, 변수2=값2) 로 설정한다. @Message.. 더보기
특정 폴더 안에 있는 파일 다른 폴더로 복사하기 String dirpath = "F:/development/JavaTest/"; String despath = "F:/development/JavaTest/copy/"; File dir = new File(dirpath); if (dir.isDirectory()) { File[] files = dir.listFiles( new FileFilter() { @Override public boolean accept(File pathname) { return pathname.isFile(); } } ); for (File file : files) { File des = new File(despath + file.getName()); if (des.exists()) { System.out.println("des .. 더보기
파일 이동 1) 기본 - 파일의 정보만 변경. renameTo 사용 - 원본파일객체.renameTo(목적지파일객체) 2)사용 예시 ㄱ. 통신 프로그램에서 파일 이동 시 사용 - client 에서 server 로 파일 전송 시, 전송 완료 후 전송 폴더에서 bak 폴더로 옮길 때 - server 에서 client로부터의 파일 수신 시, 파일 체크 후 tmp 폴더에서 수신 폴더로 옮길 때 3) 사용 방법 - 파일경로는 미리 구성해놓고, 파일명은 파라미터로 받아서 '파일경로/파일명'을 만듦 - new StringBuffer.append(), File.separator, StringBuffer.toString()을 이용 - '/' 를 File.separator 로 설정 4) 예시 String folder = "F:/dev.. 더보기
Socket 통신 1. Socket 통신에 필요한 기능과 해당 기능을 수행하는 class와의 매핑순번 기능 class 비고 1 Connect to a remote machine Socket'Send data' 와 'Receive data'는 동시에 진행이 가능함 2 Send data 3 Receive data 4 Close a connection 5 Bind to a port ServerSocket 6 Listen for incoming data 7 Accept connections from remote machines on the bound port 2. server class 구성 - 여러 client가 동시에 server 에 connect 해서 send data, receive data를 할 수 있음. 따라서 lis.. 더보기