본문 바로가기

Java Tips

[Java Tips] File.mkdir()과 File.mkdirs()의 차이점 Java API에서는 디렉토리를 생성하기 위해, File.mkdir()과 File.mkdirs(), 두 개의 API가 제공됩니다. 위 두 개의 API는 모두 디렉토리를 생성하는 기능을 하지만, 세부적으로는 약간 틀린 기능을 합니다. File.mkdir() 만들고자 하는 디렉토리의 상위 디렉토리가 존재하지 않을 경우, 생성 불가 C:\base\want want 디렉토리를 만들고자 하는데, base 디렉토리가 없는 경우, 생성 불가 File.mkdirs() 만들고자 하는 디렉토리의 상위 디렉토리가 존재하지 않을 경우, 상위 디렉토리까지 생성 C:\base\want want 디렉토리를 만들고자 하는데, base 디렉토리가 없는 경우, base 디렉토리까지 생성 package javatips; import ja.. 더보기
[Java Tips] LineNumberReader를 이용해 손쉽게 Line Number 추출하기 이 팁은 LineNumberReader를 이용하여, Text 파일의 Line Number를 추출하는 법을 소개합니다. FileReader를 이용하여, File을 오픈하고, BufferedReader, LineNumberReader를 Chaining하여, LineNumberReader.getLineNumber() method를 이용하여, 텍스트 파일의 라인 넘버를 손쉽게 추출할 수 있습니다. package javatips; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; public class LineNumberReaderDemo { publi.. 더보기
[Java Tips] Logger 설정을 Properties File로 처리하는 법 이 팁은 java.util.logging.Logger으 Default 값들을 Properties File로 설정하는 법을 설명합니다. 다음 내용을 Properties 파일에 저장하신 후, # 루트 로거에 대한 랜들러 설정 handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler # Default 로깅 레벨 설정 .level = ALL # ConsoleHandler 에 대한 로깅 레벨 설정 java.util.logging.ConsoleHandler.level = INFO # FileHandler 에 대한 로깅 레벨 설정 java.util.logging.FileHandler.level = ALL # ConsoleHandler 에 대.. 더보기
[Java Tips] DatagramSocket을 이용한 간단한 UDP 서버/클라이언트 구현 자바에서는 UDP 통신을 위해서 DatagramSocket과 DatagramPacket을 제공합니다. 이번 팁에서는 DatagramSocket과 DatagramPacket을 이용하여 간단한 UDP 서버/클라이턴트를 구현해 보겠습니다. UDP 통신을 위해서는 UDP 패킷을 받을 서버 Socket이 생성되어야 합니다. Socket 생성 시는 다음과 같은 순서로 수행합니다. 1. DatagramSocket 생성 : 생성 시, Listen할 Port 지정 2. DatagramPacket 생성 : 데이터를 수신할 그릇이 되는 DatagramPacket 생성 3. DatagramSocket.receive() 호출 : 생성된 Socket의 receive method를 생성된 packet object를 파라미터로 하여.. 더보기
[Java Tips] Localhost의 IP, Hostname을 알아내는 법 이번 팁은 Localhost의 IP, Hostname을 알아 내는 법입니다. Localhost의 IP, Hostname은 InetAddress.getLocalHost() method를 이용하여 손쉽게 얻어올 수 있습니다. import java.net.InetAddress; import java.net.UnknownHostException; public class LocalHostIpTest { public static void main(String args[]){ try { InetAddress addr = InetAddress.getLocalHost(); // Get IP Address byte[] ipAddr = addr.getAddress(); // Get hostname String hostnam.. 더보기
[Java Tips] 도메인(Domain)을 IP로 변환하는 법 다음 팁은 도메인(Domain)을 IP로 변환하는 팁입니다. 서버에 접속해야 하는 클라이언트가 서버 IP를 알아야 하는 경우에 사용하실 수 있습니다. import java.net.InetAddress; import java.net.UnknownHostException; public class DomainToIp { public static void main(String args[]){ try { InetAddress addr = InetAddress.getByName("froginpot.tistory.com"); byte[] ipAddr = addr.getAddress(); // IP 형식으로 변환 String ipAddrStr = ""; for (int i=0; i 0) { ipAddrStr += "... 더보기
[Java Tips] 날짜 비교하는 법 이 팁은 Java에서 날짜 형식을 비교하는 방법을 보여 줍니다. 날짜 형식은 주로 Calendar나 Date를 이용하는데, 두 class모두, before, after, equals method를 이용하여 비교를 할 수 있습니다. import java.util.*; import java.util.*; import java.text.*; public class TestDate { public static void main(String args[]) { TestDate a = new TestDate(); } TestDate() { String DATE_FORMAT = "yyyy-MM-dd"; java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(D.. 더보기
[Java Tips] 현재 작업 디렉토리 얻어오기 가끔 현재 작업 디렉토리를 알아야 하는 경우가 있습니다. 이럴 경우, System Property를 이용하여 얻어올 수 있습니다. String curDir = System.getProperty("user.dir"); user.dir property는 Java VM이 실행된 디렉토리를 리턴합니다. 예를 들어, D:\Project\Test 디렉토리에서 java 명령으로 수행된 경우, D:/Project/Test 가 리턴되게 됩니다. 더보기
[Java Tips] array 를 다른 array로 복사하는 법 얼마전 다른 개발자가 작성한 코드를 보다가 array 복사를 for loop 문을 이용해서 하는 것을 보았습니다. 물론, 별 생각 없이 써도 무방한 코드입니다. int[] src = {1, 2, 3, 4, 5}; int[] dest = new int[src.length]; for(int i = 0 ; i < src.length ; i++){ dest[i] = src[i]; } 하지만, 복사해야 하는 array의 사이즈가 1000, 10000으로 커진다면 어떻게 될까요? 과연 성능이 잘 나올까요? 이런 경우, 사용할 수 있는 간단한 API가 java.lang.System.arraycopy(Object src, int src_position, Object dst, int dst_position, int le.. 더보기
[Java Tips] ArrayList를 array로 변환하는 방법 ArrayList를 쓰다 보면 가끔 array로 변환해야 하는 경우가 발생합니다. 여러 가지 방법이 있겠지만, 다음과 같이, 두 가지 방법을 주로 쓰게 됩니다. array를 생성한 다음, for 문을 통해 assign 하는 방법 ArrayList.toArray() 또는 ArrayList.toArray(T[] a)를 이용하는 방법 1번 보다는 2번 방법이 성능 면이나 코드 가독성 면에서 추천합니다. 샘플 1 : ArrayList.toArray()를 이용하는 법 import java.util.ArrayList; public class ArrayListToArray { public static void main(String[] args) { // Array List 생성 ArrayList al = new Ar.. 더보기
[Java Tips] 자바 프로그램 메모리 사용량 보기 자바로 개발하다 보면, 헌재 전체 메모리 양과 사용 가능한 메모리 양을 확인해야 할 때가 있습니다. 메모리와 관련된 기능은 Runtime class에서 제공해 주며 다음과 같이 사용할 수 있습니다. 각 Method 들은 byte 단위의 메모리 양을 리턴합니다. totalMemory : 현재 Allocate 된 메모리 사용량을 리턴 freeMemory : 현재 Allocate 된 메모리 중, 사용 가능한 메모리 양을 리턴 public class MemoryTrace { public static void main(String[] args) { System.out.println("Total Memory : " + Runtime.getRuntime().totalMemory()); System.out.printl.. 더보기
[Java Tips] NullPointerException을 피하는 String 비교 구문 개발을 하다 보면 상수형 String과 변수형 String을 비교해야 하는 일이 자주 있습니다. 이런 경우, 다음과 같이 사용하는 경우는 변수형 String이 Null인 경우, NullPointerException이 발생합니다. 예 : if(variable.equals(CONSTANT_STRING)) doSomething(); NullPointerException을 발생시키지 않기 위해, variable에 대해 null 체크를 해 줘야 합니다. 예 : if(variable != null && variable.equals(CONSTANT_STRING)) doSomething(); 하지만, 다음과 같이 쓰면, null 체크 없이도, 비교 구문을 작성하실 수 있습니다. 예 : if(CONSTANT_STRING.. 더보기
[Java Tips] Java Primitive Type을 Hex String으로 변환하는 Utility 정수형 데이터를 Hex String으로 변환 하거나, 그 역변환 하는 방법은 여러가지가 있습니다. Integer.toString(int i, int radix)와 같이 기본 Java API에서 제공되는 부분도 있습니다. 이를 사용해도 되지만, char나 byte 같은 경우는 Type Casting을 통해서 해야 하는 번거로움이 있습니다. 그래서, 다음과 같은 Utility Class를 만들어서 쓰고 있습니다. package utils; /** * 정수형 타입을 Hex String으로 변환하고, Hex String을 정수형 타입을 변환하는 Utility */ public class HexUtils { private static final char hexchar[] = { '0', '1', '2', '3',.. 더보기