프로그래밍 언어/Kotlin

java.io.File 사용법

Julie825 2022. 11. 6. 00:08

[공식문서] 소개 요약

File is An abstract representation of file and directory pathnames.

Instances of the File class are immutable

Unix/Window 스타일, 절대/상대 경로 모두 지원함

getParent( )로 최상단 디렉토리를 얻을 수 있음.

getPath( )로 pwd를 대체할 수 있음.

 

Constructor 종류는 아래와 같다.

File(File parent, String child)
// Creates a new File instance from a parent abstract pathname and a child pathname string.
File(String pathname)
// Creates a new File instance by converting the given pathname string into an abstract pathname.
File(String parent, String child)
// Creates a new File instance from a parent pathname string and a child pathname string.
File(URI uri)
// Creates a new File instance by converting the given file: URI into an abstract pathname.

 

파일 객체 조회하기

walk() : 재귀적으로 디렉토리의 파일 리스트를 반환한다. 순회에 forEach를 사용하자.

walkBottomUp(), walkTopDown() 등의 변형도 있다.

exists() : 기록된 path가 유효한지 검사한다.

 

파일 및 디렉토리 생성하기

mkdir( ) : Boolean : Directory 이름이 존재하지 않을 때만 directory를 생성한다.

createNewFile( ): Boolean : 반드시 파일명이 존재하지 않을 때만 file을 생성한다. 파일 이름과 위치는 File 객체에 지정되어야한다.

delete(): Boolean : Pathname에 지정된 파일 혹은 디렉토리를 삭제한다.

 

전체 삭제하기 - stackoverflow

val entries: Array<String> = index.list()
for (s in entries) {
    val currentFile: File = File(index.getPath(), s)
    currentFile.delete()
}

 

파일 수정

read [참고 자료]

: Scanner와 비슷한 일을 할 수 있는 forEachLine을 지원.

val file = File("/home/user/info.docx")
file.forEachLine { it -> println(it) } // 한줄씩 출력한다.

 

write [참고 자료]

: 기존에 있던 내용은 무시하고, 인자로 들어온 내용을 덮어쓴다.

writeText, writeByte 중 선택할 수 있다.

val file = File("/home/user/info.docx")
file.writeText("") // 이러면 파일을 비울 수 있다.

 

Scanner class 이용

: file의 내용을 일정한 길이로 끊어읽을 때 유용하다. 닫아줘야 할 것이 두 개이니 신경써서 닫아주자.

val file = File("/home/user/info.docx")
val inputStream = FileInputStream(file)
val sc = Scanner(inputStream, Charset.defaultCharset())
    while (sc.hasNext()){
        val line = sc.nextLine()
        // nextLine()은 개행문자를 기준으로 file의 내용을 읽는다.
    }
inputStream.close()
sc.close()

 

FileWriter [참고 자료]

: 기존 내용에 내용을 추가하고 싶을 때 유용하다. 생성 후 꼭 닫아주자.

path = "/home/user/info.docx"
val fw = FileWriter(path, true)
fw.write(text)
fw.clodw()