시간 필드(temporal field)란 날짜와 시간을 구성하는 개별 요소를 의미합니다. 예를 들어 연중 몇 번째 달, 몇 시 같은 값들이 대표적입니다. Java에서는 이러한 필드를 TemporalField 인터페이스로 표현하며, ChronoField 클래스가 이 인터페이스를 구현하여 표준 필드 집합을 제공합니다.ChronoField에서 지원하는 시간 관련 필드ChronoField 클래스는 아래와 같은 다양한 시간 관련 필드를 지원합니다.필드설명CLOCK_HOUR_OF_AMPM오전/오후(am/pm) 기준의 시계 시간(1~12)을 나
날짜-시간 필드(Temporal Field)란 연 중 몇 번째 월, 시 중 몇 번째 분과 같이 날짜와 시간을 구성하는 개별 요소를 의미합니다. 자바에서는 이러한 필드를 TemporalField 인터페이스로 표현하며, java.time.temporal.ChronoField 클래스(정확히는 열거형)가 이 인터페이스를 구현하여 표준 날짜-시간 필드 집합을 제공합니다. ChronoField 클래스가 지원하는 날짜 관련 주요 필드 다음은 ChronoField 클래스에서 지원하는 대표적인 날짜 관련 필드 목록입니다. 필드설명 ALIGNED
Java에서 밀리초(millisecond) 값은 1970년 1월 1일 00:00:00 UTC(에포크 시간)부터 경과한 시간을 숫자로 표현한 것입니다. 이러한 밀리초 값을 사람이 읽기 쉬운 날짜·시간 형식으로 변환하려면 java.text.SimpleDateFormat 클래스를 활용할 수 있습니다. SimpleDateFormat 클래스란? SimpleDateFormat은 문자열을 날짜(Date) 객체로 파싱하거나, 날짜 객체를 지정한 형식의 문자열로 포맷팅하는 데 사용되는 클래스입니다. 이 클래스의 생성자 중 하나는 원하는 날짜 형식을
Java에서 현재 날짜와 시간을 밀리초 단위로 얻어야 하는 경우가 종종 있습니다. 예를 들어 실행 시간 측정, 타임스탬프 생성, 고유 ID 생성 등이 대표적인 활용 사례입니다. Java에서는 Date, Calendar, Instant 클래스를 활용해 이 값을 손쉽게 구할 수 있습니다.여기서 말하는 밀리초 값은 에포크(epoch) 시간을 기준으로 합니다. 에포크란 1970년 1월 1일 00:00:00 GMT를 의미하며, 이 시점부터 현재까지 경과한 시간을 밀리초(1/1000초) 단위의 숫자로 표현한 것입니다.1. Date 클래스의 g
Java에서 특정 날짜와 시간을 밀리초 단위의 에포크(epoch) 시간으로 변환하는 방법은 여러 가지가 있습니다. 대표적으로 java.text.SimpleDateFormat 클래스, Calendar 클래스, 그리고 Java 8부터 도입된 ZonedDateTime과 Instant 클래스를 활용하는 방식이 있습니다. 각 방법을 예제 코드와 함께 살펴보겠습니다. 1. SimpleDateFormat 클래스 사용하기 java.text.SimpleDateFormat 클래스는 문자열을 날짜로 변환하거나, 날짜를 문자열로 포맷팅하는 데 사용됩니
정규식 매칭의 기본 절차주어진 문자열과 정규 표현식(Regex)을 매칭하여 데이터를 검증하려면 다음 세 단계를 거쳐야 합니다.정규식 컴파일 : Pattern 클래스의 compile() 메서드를 사용해 정규 표현식을 컴파일합니다.Matcher 객체 생성 : Pattern 클래스의 matcher() 메서드에 검증 대상 문자열을 인자로 전달하여 Matcher 객체를 얻습니다.매칭 결과 확인 : Matcher 클래스의 matches() 메서드는 문자열이 정규식과 완전히 일치하면 true, 그렇지 않으면 false를 반환합니다. 이 메서드를
생성자(Constructor)는 메서드와 비슷한 형태를 가지며, 클래스의 객체가 생성되는 시점에 자동으로 호출됩니다. 주로 클래스의 인스턴스 변수를 초기화하는 용도로 사용됩니다. 생성자는 반드시 클래스와 같은 이름을 가져야 하며, 반환 타입을 가지지 않습니다.자바의 기본 생성자(default constructor)는 클래스의 데이터 멤버들을 각 타입별 기본값으로 초기화합니다. 예를 들어 int형은 0, double형은 0.0으로 초기화됩니다. 사용자가 명시적으로 생성자를 정의하지 않으면, 자바 컴파일러가 자동으로 기본 생성자를 만들
Java에서 인터페이스(Interface)는 클래스와 유사한 참조 타입이지만, 오직 추상 메서드와 final이면서 static인 필드(상수)만 포함할 수 있다는 점이 다릅니다.extends 키워드로 여러 인터페이스 상속하기클래스와 마찬가지로 extends 키워드를 사용하면 한 인터페이스가 다른 인터페이스를 확장(상속)할 수 있습니다. 특히 Java의 인터페이스는 클래스와 달리 다중 상속이 가능하며, extends 키워드 뒤에 쉼표(,)로 구분하여 여러 인터페이스를 동시에 상속받을 수 있습니다.interface MyInterface
래퍼 클래스(Wrapper Class)란? 자바는 java.lang 패키지에서 래퍼 클래스라고 불리는 특별한 클래스들을 제공합니다. 래퍼 클래스는 int, char, double 같은 원시 타입(primitive type)을 객체 형태로 감싸는 역할을 합니다. 원시 타입 자체는 객체가 아니기 때문에 객체가 요구되는 상황에서는 반드시 래퍼 클래스로 변환해야 합니다. 자바가 제공하는 여덟 가지 원시 타입에는 각각 대응되는 래퍼 클래스가 있습니다. byte → Byte short → Short int → Integer long → Lo
Java Files 클래스란?Java 7부터 Files 클래스가 새롭게 도입되었습니다. 이 클래스는 파일, 디렉토리 등 다양한 종류의 파일 시스템 객체를 다룰 수 있는 정적(static) 메소드들을 제공합니다.그중 createDirectory() 메소드는 생성하고자 하는 디렉토리의 경로를 매개변수로 전달받아 해당 위치에 새로운 디렉토리를 만들어 줍니다.createDirectory() 메소드로 디렉토리 생성하기다음 Java 예제는 사용자로부터 디렉토리를 생성할 경로와 이름을 입력받은 후, 실제로 디렉토리를 생성하는 과정을 보여줍니다.
Java 프로그램을 개발하다 보면 여러 단계로 이루어진 디렉터리(폴더)를 한 번에 생성해야 하는 경우가 자주 있습니다. 예를 들어 sample1/sample2/sample3처럼 중첩된 경로를 만들 때, 각 디렉터리를 하나씩 순서대로 만들 필요 없이 한 번의 호출로 전체 계층 구조를 생성할 수 있습니다.Java 7부터 도입된 Files 클래스는 파일과 디렉터리를 다루는 다양한 정적(static) 메서드를 제공합니다. 그중 createDirectories() 메서드를 사용하면 지정한 경로의 디렉터리뿐만 아니라 존재하지 않는 모든 상위(
개요 Java 프로그래밍을 하다 보면 특정 디렉터리에 있는 이미지 파일(jpg)만 골라서 목록을 가져와야 하는 경우가 자주 있습니다. 가장 기본적인 방법은 File 클래스의 String[] list(FilenameFilter filter) 메서드를 사용하는 것이며, Java 8 이상에서는 NIO(Files.walk)를 활용한 방법도 널리 쓰입니다. 방법 1: FilenameFilter 인터페이스 사용하기 File 클래스의 list(FilenameFilter filter) 메서드는 현재 File 객체가 가리키는 경로에 존재하는 파일
Java에서 특정 디렉토리 안에 원하는 파일이 있는지 확인하고 싶다면 File 클래스가 제공하는 메서드를 활용할 수 있습니다. 이 글에서는 두 가지 대표적인 방법을 예제 코드와 함께 소개합니다.1. list() 메서드로 전체 파일 목록 조회 후 비교하기File 클래스의 list() 메서드는 현재 File 객체가 나타내는 경로에 존재하는 모든 파일과 디렉터리의 이름을 String 배열 형태로 반환합니다.따라서 특정 파일을 검색하려면 반환된 배열을 순회하면서 equals() 메서드로 각 항목의 이름과 찾고자 하는 파일 이름을 일일이 비
Java에서 여러 개의 텍스트 파일을 하나의 파일로 통합해야 하는 경우가 종종 있습니다. 예를 들어 로그 파일을 병합하거나, 분산된 데이터를 한곳에 모아 처리할 때 유용합니다. 이 글에서는 File 클래스의 listFiles() 메서드를 활용해 폴더 내 모든 파일을 읽고, 그 내용을 하나의 출력 파일에 저장하는 방법을 소개합니다.listFiles() 메서드란?File 클래스의 listFiles() 메서드는 현재 File 객체가 나타내는 경로에 존재하는 모든 파일과 디렉터리의 추상 경로(abstract path) 객체들을 배열 형태로
Java에서 listFiles() 메서드는 현재 File 객체가 가리키는 경로에 존재하는 모든 파일과 디렉터리의 객체(추상 경로명)를 배열 형태로 반환합니다. FileFilter 인터페이스는 경로 이름을 걸러 주는 필터 역할을 하며, 이를 listFiles() 메서드의 매개변수로 전달할 수 있습니다. 그러면 해당 메서드는 전달받은 필터 조건에 맞는 항목만 선별하여 결과를 반환합니다. 따라서 폴더 안의 파일만 목록으로 가져오고 싶다면, 파일만 통과시키는 FileFilter를 구현한 뒤 이를 listFiles() 메서드의 인자로 넘겨주
Java에서 특정 폴더 안에 있는 디렉토리(폴더)만 골라서 가져오고 싶다면 어떻게 해야 할까요? 이 글에서는 listFiles() 메서드와 FileFilter 인터페이스를 활용하는 방법, 그리고 NIO API의 Files.walk()를 이용하는 방법까지 예제 코드와 함께 자세히 살펴봅니다. 핵심 개념 정리 listFiles() 메서드는 현재 File 객체가 나타내는 경로에 존재하는 모든 파일과 디렉토리의 객체(추상 경로)를 배열 형태로 반환합니다. FileFilter 인터페이스는 경로 이름을 걸러내는 필터 역할을 하며, 이를 lis
배열(Array)은 고정된 개수의 항목을 저장할 수 있는 컨테이너이며, 배열에 담기는 모든 항목은 반드시 동일한 타입이어야 합니다. 대부분의 자료구조는 알고리즘을 구현할 때 배열을 활용합니다. 배열의 개념을 이해하려면 다음 두 가지 핵심 용어를 알아두는 것이 좋습니다.요소(Element): 배열에 저장되는 각각의 항목을 의미합니다.인덱스(Index): 배열 내 각 요소의 위치를 나타내는 숫자 값으로, 특정 요소를 식별하는 데 사용됩니다.객체 배열 생성하기Java에서 클래스 역시 하나의 데이터 타입(참조 타입)으로 취급되기 때문에,
파일 시스템을 다루다 보면 특정 폴더 안에 있는 빈 디렉토리(empty directory)의 이름만 골라내야 하는 경우가 종종 있습니다. Java에서는 File 클래스의 listFiles() 메서드와 FileFilter 인터페이스를 조합하면 이 작업을 아주 간단하게 처리할 수 있습니다. listFiles() 메서드와 FileFilter 이해하기 listFiles() 메서드는 현재 File 객체가 가리키는 경로에 존재하는 모든 파일과 디렉토리에 대한 추상 경로(abstract pathname) 객체를 배열 형태로 반환합니다. Fil
Java에서 IllegalArgumentException은 메서드에 허용되지 않는(잘못된) 인자가 전달될 때 발생하는 런타임 예외입니다. 다행히 이런 예외를 유발할 수 있는 메서드들은 대부분 어떤 값이 유효한지 미리 알고 있기 때문에, 메서드를 호출하기 전에 if 조건문으로 인자 값을 검증하면 예외 자체를 효과적으로 피할 수 있습니다.if 문을 활용한 인자 값 검증if 문을 사용하면 메서드가 받을 수 있는 인자 값의 범위를 제한할 수 있습니다. 예를 들어, 특정 메서드가 일정 범위의 값만 허용한다면, 실제로 메서드를 실행하기 전에
listFiles() 메서드란? Java의 listFiles() 메서드는 현재 File 객체가 가리키는 경로에 존재하는 모든 파일과 디렉토리의 추상 경로(abstract path) 객체들을 배열 형태로 반환합니다. FileFilter 인터페이스는 경로명(pathname)을 걸러 주는 필터 역할을 하며, 이를 listFiles() 메서드의 매개변수로 전달할 수 있습니다. 필터가 적용되면 조건에 부합하는 파일이나 디렉토리만 결과에 포함됩니다. 따라서 특정 폴더 안의 숨김 디렉토리만 얻고 싶다면, 숨김 속성을 지닌 디렉토리만 허용하는 F