D+36-API날짜클래스.LocalDataTime, 데이터출력.과정,방법

Bku·2024년 2월 19일

학원 일기

목록 보기
34/67
post-thumbnail

JAVA API

날짜 클래스(자주 사용)

LocalDataTime 클래스

public class LocalDataTimeApplication {
    public static void main(String[] args) {
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);
        // 현재 시간을 가져온 뒤
        DateTimeFormatter dateTimeFormatter
                = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 가져온 시간을 어떤 형태로 나타낼지 정하고
        String str = localDateTime.format(dateTimeFormatter);
        // 현재시간을 정한 형태로 나다낸다는 코드를 str에 집어 넣는다.
        System.out.println(str);
    }
}
  1. LocalDateTime클래스를 가져와서 now함수로 현재시간을 가져온다.
  2. DateTimeFormatter의 ofPattern함수를 가져온다.
  3. 이제 여기에 형식을 문자열 형태로 넣어주면 되는데 형식이 중요하다
  • yyyy : 년(year) (4자리수)
  • MM : 월(month) (2자리수)
  • dd : 일(day) (2자리수)
  • HH : 시(hour) (2자리수)
  • mm : 분(minute) (2자리수)
  • ss : 초(second) (2자리수)
    영어 단어의 첫 문자 를 숫자의 크기만큼 반복하는것이다. 년은 2024이렇게 4자리라서 yyyy인 것. 월과 시는 대문자인데 이것은 다른 문자와 겹치는 것을 방지하기 위함인거 같다

현재날짜 + 현재시간을 나타내준다. 주로 데이터베이스에 데이터를 넣을 때 사용할 수 있다.

데이터 입출력

기본 입출력 스트림

파일에는 크게 두종류의 파일이 있다. 하나는 binary파일로, 열어보면 2진수 또는 16진수로 되어있다. 주로 이미지, 멀티미디어 등 모든 종류의 파일이다. 다른 하나는 문자파일로 문자만으로 이루어진 파일이다. 메모장 파일이 하나의 예이다.

인풋 스트림(input stream)

입력용 혹은 읽기용 으로 대상은 키보드, 파일이다. 우리가 입력한(키보드)문자나, 파일을 읽는다는 뜻이다. 1byte기반 입력이다. BufferdInputStream이 예이다

아웃풋 스트림 (output stream)

출력용으로 대상은 모니터, 파일이다. 모티터로 데이터를 출력하거나 파일로 데이터를 출력한다. 마찬가지로 1byte기반 출력이다. BufferdoutputStream이 예이다.

읽기와 쓰기는 동시에 이루어질 수 없기에 클래스가 따로 생성되어 있다.

public class WriterApplication {
    public static void main(String[] args) throws Exception{//
        OutputStream outputStream
                = new FileOutputStream("src/main/resources/test1.db");// 적어준 경로에 2진 파일이 있으면 열고 없으면 만든다.
        //생성자는 주어진 파일을 생성할 수 없으면 IOException을 일으킬 수 있으므로 예외처리가 필수이다.
        // 입출력 순서
        //  1) 파일 열기 with. 생성자
        //  2) 글자쓰기 with. write함수
        //  3) 파일 닫기 with.close
//        1) 파일 쓰기용으로 열기 : 그래이들 프로젝트의 현재 경로는 src의 상위 파일이다.
        byte a = 10; // byte단위로 적어야한다.
        byte b = 20;
        byte c = 30;

        // 파일에 write함수로 10, 20, 30 작성
        outputStream.write(a);
        outputStream.write(b);
        outputStream.write(c);


        // 파일에 접근하는것은 속도가 굉장히 느리다
        // 그래서 접근을 최대한 줄여야 하는데 이걸 줄여주는것이 버퍼이다.
        // 10, 20, 30을 쓸때마다 파일에 접근하면 굉장히 속도가 느려진다.
        // 그래서 buffer라는 가상 공간에 데이터를 다 넣어두고 한번에 출력한다.
        // 마지막엔 buffer를 모두 제거하고 파일에 접근해서 데이터를 처리해야하므로 flush처리를 해주어야한다.
        outputStream.flush();

        // 사용을 하지 않을 시 닫아줘야한다. 닫지 않으면 열어놓은 상태로 다른 사람들이 사용을 못함
        outputStream.close();
    }
}
  1. 이진 데이터를 출력하기위해 출력클래스의 최상위 클래스인 outStream을 불러서 그 중에 FileOutStream을 이용하였다. 생성자에 파일 경로 작성하여 파일을 열 수 있다. 만약 파일이 없다면 생성하게된다.
  2. 출력 클래스를 사용하려면 예외처릴 무조건 해줘야한다. 파일 생성에 문제가 생기면 반드시 예외가 발생하기 때문이다.
  3. write함수를 이용해서 파일에 데이터를 출력할 수 있다.
  4. 파일에 한번 접근하는 것은 cpu입장에서 많은 시간이 걸리는데, 여러번 접근 하다 보면 굉장히 느려지게 된다. 그래서 데이터를 모아뒀다가 한번에 처리하면 속도를 올릴 수있다.
  5. 이 때 데이터를 일시적으로 모아놓는 가상공간이 buffer이고 flush함수를 사용해서 buffer을 없애주고 파일에 접근에 출력을 하게된다.
  6. 마지막으로 파일을 다 사용하면 닫아줘야 다른 이용자들이 접근을 할 수 있다.
profile
기억보단 기록

0개의 댓글