카테고리 없음

자바로 html 생성하기, BufferedWriter, e.printStackTrace()

mejii 2024. 4. 12. 22:30

자바로 html 생성하기

 

자바에서는 File class에서 파일과 디렉터리를 다룬다!

Run을 해주면 "index.html" 파일이 생성된다.

 

import java.io.*;

public class Main {

    public static void main(String[] args) {

        try{
            File file = new File("index.html");
            BufferedWriter writer =  new BufferedWriter(new FileWriter(file));
            //sout 대신 BuffedWriter 사용, 사용 전 만들어주고, close 해준다.
            StringBuilder html = new StringBuilder(); //StringBuilder로 추가하기
            html.append("<!DOCTYPE html>\n");
            html.append("<html lang=\"utf-8\">\n");
            html.append("<head>\n");
            html.append("    <meta charset=\"UTF-8\">\n");
            html.append("    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n");
            html.append("    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n");
            html.append("    <title>JavaProperties</title>\n");
            html.append("    <style>\n");
            html.append("        table { border-collapse: collapse; width: 100%;}\n");
            html.append("        th, td { border: solid 1px #000;}\n");
            html.append("    </style>\n");
            ....
            writer.write(html.toString());
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

출력을 위해 BufferedWriter 를 이용한다.

BufferedWriter

버퍼를 사용해 쓰는 함수를 의미한다.

버퍼를 사용하지 않는 입력은 키보드의 입력이 키를 누르는 즉시 바로 프로그램에 전달되지만,

버퍼를 사용하는 입력은, 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송된다.

(버퍼가 가득차거나 개행 문자가 나타나면 버퍼의 내용을 한번에 프로그램에 전달)

 

버퍼를 이용하지 않는 경우, 하드디스크와 외부장치(키보드, 모니터)의 데이터 입출력은 시간이 더 걸린다.

즉, 버퍼를 두어 한번에 보내는 것이 더 효율적이고 빠르다.

(쓰레기를 하나하나 버리는 것보다 한번에 쓰레기통을 비우는 것이 빠르다는 비유를 생각하자!)

System.println("") 는 적은 데이터 출력에선 편하지만,

많은 데이터 출력에선 BufferedWriter 사용이 좋다.

System.println("") 는 출력과 개행이 동시에 가능하기에 ()안에 데이터만 입력하면 되지만,

BufferedWriter는 write 를 이용해 출력해준다.

BufferedWriter는 버퍼를 잡아놓았기에 반드시 사용하고, 사용 후 close()로 닫아준다.

(출처 : https://rlakuku-program.tistory.com/33)

 

StringBuilder를 이용해 내용을 추가해준다.

이 때, html 기본 코드를 하나하나 append 시켜준다.

 

예외처리 e.printStackTrace()

 

예외가 발생했을 때,

exception이 발생한 이유와 위치는 어디에서 발생했는지 전체적인 단계를 모두 출력한다.

 


 처음으로 자바를 이용해 html 파일을 만들었다.

코드를 처음 작성할 땐, 프론트엔드 언어처럼 각 코드를 연결해야하는지,

어떻게 구현해야 하는지 전혀 감이 오지 않았다.

하지만, 자바의 file class를 이용하면 매우 간단히 html 파일이 생성되는 것을 알았고,

그 이후는 html의 코드를 자바의 출력으로 구현해야함을 배웠다.

하지만, html의 head와 style을 bufferedwriter를 통해 쓰기만 했는데,

html 구현이 어떻게 가능한지는 잘 모르겠다.

이 부분에 대한 내용은 서치로도 잘 나오지 않으니 질문을 통해 꼭 배우고 넘어가야겠다!