Daily coding

Java Basic : day 7 - File write 파일 쓰기 본문

Language/Java_basic

Java Basic : day 7 - File write 파일 쓰기

sunnnkim 2019. 11. 26. 19:58

File write

 

File file = new File("d:/tmp/newFile.txt");
// 쓰기 기능이 있는 파일이라면 덮어씀 (읽기 전용 아닌 경우)

 

* FileWriter : 파일에 문자열 입력하는 클래스

 

 

 

1. 한 문자씩 쓰기

 

 

FileWriter fw = new FileWriter(file);


fw.write("하이하이" + "\n");

     // 개행이 필요하면 \n을 덧붙여줘야 함 
     // 위의 코드는 close를 안하면 파일에 쓰기가 안됨!!
     // 읽기는 안해도 읽힘
     fw.close();
자바로 쓴 파일은 자바에서 읽었을 때 글자가 깨지지 않는다.

 

 

2. 추가로 쓰기

 

* FileWriter 클래스 변수를 만들고 초기화 할 때,

  인스턴스가 2개인 생성자 FileWriter(file, true) 로 호출하게 되면

  기존 텍스트 파일에 문자열을 더할 수 있다.

  FileWriter( file디렉토리 , default값이있음(true, 덮어쓰기)/없음(false)) 

 

FileWriter fAppend= new FileWriter(file, true); // <-- default값이 있다 (=덮어쓴다)
fAppend.write(" 건강하세요\n");
fAppend.close();

 

//결과

하이하이

건강하세요

 

 

 



3. 문장으로 기입하기

 

 : BufferedWriter & PrintWriter 사용이 필요하다.

- BufferedWriter : PrintWriter로 문자를 기입한 것을 문장으로 모아준다. (버퍼에 하나로 모음)

                         효율적으로 메모리를 사용할 수 있음.

- PrintWriter : 문자열을 파일에서 쉽게 쓸 수 있도록 돕는 메소드 제공(println( ) 같은 메소드)

 

 

if(checkBeforeWriteFile(file)) {
        FileWriter fWriter = new FileWriter(file); // 기입용 FileWriter(파일 포인터에 설정함)
        BufferedWriter bw = new BufferedWriter(fWriter); // 문장으로 모아주는 부분
        PrintWriter pw = new PrintWriter(bw); // 모아진 문장을 출력해주는 부분()

        pw.print("안녕하세요. 매우 졸립니다. ");
        pw.print("bufferedwriter 쓰는중 \n");
        pw.println("이거는 println입니다.");
        pw.println("문장을 다 쓰면 반드시 close");
        pw.close();


}else { // ReadOnly거나 해당 파일이 없는 경우
        System.out.println("파일이 없거나 쓸 수 없습니다.");
}

}

 

 

 

            
파일이 존재하고 쓸 수 있는 파일인지 확인하는 메소드 (유틸리티 함수)


static boolean checkBeforeWriteFile(File f) {
            if(f.exists()) { // 파일이 존재함 
                        if(f.isFile() && f.canWrite()) { // 파일이며 쓸수 있는 파일인지 
                        return true;
                        }
            }
            return false;

            }
}