본문 바로가기

# 02/Java

[윤성우 열혈자바] 33-1. 파일 시스템 기본적인 파일 시스템 1 • 윈도우의 파일 경로를 나타내는 방식: 다수의 상위 디렉토리 가질 수 있음 C:\javastudy\simpe.java ( 예, C:, D:, E: 등 ) • 리눅스의 파일 경로를 나타내는 방식: 하나의 상위 디렉토리를 가짐 /javastudy/simple.java 기본적인 파일 시스템 2 : 절대 경로, 상대 경로 • 윈도우 절대 경로 C:\javastudy\simpe.java - 루트 디렉토리를 시작으로 파일 경로를 말함. 바뀔일이 없음.• 리눅스 절대 경로 /javastudy/simple.java • 윈도우 상대 경로 javastudy\simpe.java - 너의 부모는 누구니? 어디위치냐에 따라 달라짐. 루트 디렉토리가 없음.• 리눅스 상대 경로 javastudy/simp..
[윤성우 열혈자바] 32-4. I/O 스트림 기반의 인스턴스 저장 ObjectInputStream & ObjectOutputStream • ObjectInputStream 인스턴스를 입력하는 스트림 : 인스턴스 직렬화 ObjectInputStream oi = new ObjectInputStream(new FileInputStream("Object.bin")) public final Object readObject() throws IOException, ClassNotFoundException • ObjectOutputStream 인스턴스를 출력하는 스트림 : 인스턴스 역직렬화 ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream("Object.bin")) public final void writeObj..
[윤성우 열혈자바] 32-3. 문자 스트림의 이해와 활용 문자 스트림 기반에서 문자를 저장하면? class SimpleWriter { public static void main(String[] args) { try(Writer out = new FileWriter("data.txt")) { // 문자 출력 스트림 생성 out.write('A'); // 문자 'A' 저장 out.write('한’); // 문자 '한' 저장 } catch(IOException e) { e.printStackTrace(); } }} FileReader 예제 public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("읽을 파일: "); String src = sc.nextL..
[윤성우 열혈자바] 32-2. 필터 스트림의 이해와 활용 입출력 필터 스트림의 이해 1 • 필터 입력 스트림 입력 스트림에 연결되는 필터 스트림• 필터 출력 스트림 출력 스트림에 연결되는 필터 스트림 아래의 코드는 파일로부터 4바이트의 데이터를 읽어 들인다 InputStream in = new FileInputStream("data.dat");byte buf[] = new byte[4]; // 4바이트의 공간을 마련하여in.read(buf); // 4바이트를 읽어 들인다. 파일로부터 int형 데이터 하나를 읽어 들이려면?• 단계 1: 파일로부터 1바이트 데이터 4개를 읽어 들인다.• 단계 2: 읽어 들인 1바이트 데이터 4개를 하나의 int형 데이터로 조합한다. 필터 스트림의 역할 입출력 필터 스트림의 이해 2 InputStream in = new FileIn..
[윤성우 열혈자바] 32-1. I/O 스트림에 대한 이해 그냥 ‘스트림’과 ‘I/O 스트림’의 차이는? • 스트림의 주제 데이터를 어떻게 원하는 형태로 걸러내고 가공할 것인가? • I/O 스트림의 주제 어떻게 데이터를 입력하고 출력할 것인가? • 파일에 저장된 문자열을 꺼내어 컬렉션 인스턴스에 저장 → ‘I/O 스트림’으로 해결해야 할 부분 • 컬렉션 인스턴스에 저장된 문자열 중 길이가 5 이상인 문자열만 출력 → ‘스트림’으로 해결해야 할 부분 I/O 스트림 모델의 소개 프로그램의 상당 부분은 다음 대상의 입출력과 관련이 있다. 그리고 이들에 대한 자바의 입출력 방식을 가리켜 I/O 모델이라 한다. • 파일 • 키보드와 모니터 • 그래픽카드, 사운드카드 • 프린터, 팩스와 같은 출력장치 • 인터넷으로 연결되어 있는 서버 또는 클라이언트 I/O 모델과 스트림(..
[윤성우 열혈자바] 31-2. 시간대를 적용한 코드 작성 그리고 출력 포맷의 지정 세계의 시간대 한국의 시간대는 UTC+9세계 협정시보다 9시간 빠름을 의미함 시간대를 표현하는 ZoneId 클래스 시간대 고려한 코드 작성을 위해서는 ZonedId 인스턴스 생성 class ZoneIdDemo1 { public static void main(String[] args) { ZoneId paris = ZoneId.of("Europe/Paris"); System.out.println(paris); }}파리의 시간대 정보를 반영한 ZonedId 생성 ZoneId 인스턴스 생성 위한 문자열 확인 방법 시간대별 문자열 정보 전체 출력 방법 ZoneId.getAvailableZoneIds() .stream() .sorted() .forEach(s -> System.out.println(s)); 일부 ..
[윤성우 열혈자바] 31-1. 시각과 날짜 관련 코드의 작성 시간이 얼마나 결렸지? : Instant 클래스 • 시각(時刻) 시간의 어느 한 시점 ex) 지금 시각은 오후 2시 30분입니다. • 시간(時間) 어떤 시각에서 어떤 시각까지의 사이 ex) 당신에게 주어진 시간은 이제 30분밖에 남지 않았습니다 public static void main(String[] args) { Instant start = Instant.now(); // 현재 시각 정보를 담음 System.out.println("시작: " + start.getEpochSecond()); 반환 값은 ‘1970-01-01 00:00:00'을 기준으로 지나온 시간을 초 단위로 계산한 결과 System.out.println("Time flies like an arrow."); Instant end = In..
[윤성우 열혈자바] 30-3. 스트림의 최종 연산 sum(), count(), average(), min(), max() OptionalDouble average() → IntStream, LongStream, DoubleStream의 메소드 [IntStream의 메소드들] long, double에 대해서도 정의되어 있음 int sum() long count() OptionalDouble average() OptionalInt min() OptionalInt max() public static void main(String[] args) { int sum = IntStream.of(1, 3, 5, 7, 9) .sum(); // 합 System.out.println("sum = " + sum); long cnt = IntStream.of(1, 3, 5, ..