타닥타닥 개발자의 일상

Kotlin 으로 File 읽기, 쓰기, 삭제, 저장 복사 하기 /bufferedReader/bufferedWriter/ printWriter/ useLines / use 이용하여 파일 입출력하기 본문

코딩 기록/Kotlin

Kotlin 으로 File 읽기, 쓰기, 삭제, 저장 복사 하기 /bufferedReader/bufferedWriter/ printWriter/ useLines / use 이용하여 파일 입출력하기

NomadHaven 2022. 1. 26. 17:55
import java.io.*
import java.lang.Exception
import java.util.*

fun main(args: Array<String>) {

    //저장매체 : file, Database

    val outString:String  = "hi hi hi" 
    val path = "c:\\myfile\\myfile.txt" // myfile.txt이 저장된 경로를 path라는 값으로 설정

    //파일 목록
    val files = File("C:\\").listFiles() //C드라이브에 저장된 파일의 목록을 files라는 값으로 설정
    println(Arrays.toString(files)) //files를 문자열으로 바꿔서 출력

    //파일복사
    //File(path).copyTo(File("C:\\myfile\\myfile2.txt")) //copyTo이용해 파일 복사, myfile2는 복사할 파일 이름.

    //파일 내용 출력
    File(path).forEachLine{ println(it) } //특정 경로에 있는 파일을 한줄씩 출력

    //text로 읽기
    val text =File(path).readText() //특정 경로에 있는 파일을 텍스트로 읽는 값을 text로 설정
    println(text) //특정 경로에 있는 파일을 텍스트로 출력

    //파일 읽기
    //코틀린 스타일으로 파일 읽기 : use의 사용
    val file = File(path) 특정 경로에 있는 파일을 file이라는 값으로 설정
    val inputStream:InputStream = file.inputStream() 
    //특정경로에 있는 파일의 inputStream(입력스트림)을을 inputStream이라는 값으로 설정 
    val readText = inputStream.bufferedReader().use{it.readText()}
    //특정 경로에 있는 입력스트림을 bufferReader().use를 통해서 읽어들인다.
    //it은 입력스트림 안에 있는 내용이며 .readText()는 그 내용을 읽어들이는 메소드.
    //readText는 입력스트림 안에 있는 내용을 읽어들인다는 값(val)이다.
   
   println(readText) //입력스트림 안에 있는 내용 출력


    //코틀린 스타일으로 파일 읽기: useLine의 사용
    val bufferedReader = File(path).bufferedReader() //특정한 경로의 파일을 읽는 값 bufferedReader
    val lineList = mutableListOf<String>() //String 리스트의 값 lineList
    bufferedReader.useLines { lines ->lines.forEach { lineList.add(it) }}
    //값 bufferedRead에 있는 내용을 한줄씩 호출하는 useLines라는 메소드. 
    //bufferedRead에 있는 내용을 각각 한줄씩, 41번째 줄에있는 lineList라는 리스트에 추가한다.
    lineList.forEach{ println(it) }
    //bufferedRead에 있는 값이 입력된 lineList를 한줄씩 출력한다.


    //파일에 쓰기
    val str:String = "안녕하세요\r\nWorld" //안녕하세요 한줄 개행하고 World라는 값을 가진 str
    val fpath = "C:\\myfile\\testfile.txt" //testfile.txt가 있는 파일의 경로 fpath


    // 1.printWriter 사용해서 파일 쓰기
    File(fpath).printWriter().use{it.println(str)} 
    //printWriter을 이용해서 특정 경로에 있는 textfile.txt에 str의 문장 한줄씩 쓰기

    // 2.bufferedWriter 사용해서 파일 쓰기
    //File(fpath).bufferedWriter().use{it.write(str)}
    //bufferedWriter를 이용해서 특정 경로에 있는 textfile.txt에 str의 문장 한줄씩 쓰기
    
    //3.FileWriter 사용해서 파일 쓰기
    val writer = FileWriter(fpath) //특정 경로에있는 textfile.txt에 입력하는 값 writer
    try {
        writer.write(str) writer에 str의 값을 입력
    }catch (e:Exception){ // 예외값 처리
    }finally {
        writer.close() //어찌되건 writer종료 
    }

}
Comments