github 샘플 프로젝트에 자바 코드도 있습니다!(클래스명 앞에 '_' 붙어있는 파일이 자바 코드입니다)
21.02.23 수정 : java 패키지 안에 있는 클래스는 자바 코드로 작성되었습니다. (Java...)
OpenCSV 데이터 쓰고 저장하기(내부 저장소)
의존성 추가
implementation 'com.opencsv:opencsv:4.4'
CSVWriter의 writeAll()을 이용한 데이터 쓰기
//파일 경로를 무조건 넘겨받기 위해 생성자에 추가class CsvHelper(private val filePath: String){
fun writeAllData(fileName: String, dataList: ArrayList<Array<String>>){
try {
FileWriter(File("$filePath/$fileName")).use { fw ->
//writeAll()을 이용한 리스트 데이터 등록CSVWriter(fw).use {
it.writeAll(dataList)
}
}
} catch (e: IOException) {
if (BuildConfig.DEBUG) {
e.printStackTrace()
}
}
}
}
CSVWriter의 writeNext()를 이용한 데이터 쓰기
//파일 경로를 무조건 넘겨받기 위해 생성자에 추가class CsvHelper(private val filePath: String){
fun writeData(fileName: String, dataList: ArrayList<Array<String>>){
try {
FileWriter(File("$filePath/$fileName")).use { fw ->
//writeNext()를 이용한 리스트 데이터 등록CSVWriter(fw).use {
for (data in dataList) {
it.writeNext(data)
}
}
}
} catch (e: IOException) {
if (BuildConfig.DEBUG) {
e.printStackTrace()
}
}
}
}
테스트용 데이터 추가
classMainActivity : AppCompatActivity() {
//테스트용 파일명1privateval FILE_NAME_1 = "jhdroid_sample_1.csv"//테스트용 파일명2privateval FILE_NAME_2 = "jhdroid_sample_2.csv"overridefunonCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//내부 저장소 경로val filePath = filesDir.toString()
val csvHelper = CsvHelper(filePath)
//테스트용 데이터 리스트1val dataList1 = arrayListOf<Array<String>>()
//헤더로 사용할 데이터 추가
dataList1.add(arrayOf("Name", "Age"))
//데이터 추가
dataList1.add(arrayOf("Kim", "28"))
dataList1.add(arrayOf("Lee", "22"))
dataList1.add(arrayOf("Kawk", "25"))
csvHelper.writeAllData(FILE_NAME_1, dataList1)
//테스트용 데이터 리스트2val dataList2 : ArrayList<Array<String>> = arrayListOf()
//헤더로 사용할 데이터 추가
dataList2.add(arrayOf("Name", "Age"))
//데이터 추가
dataList2.add(arrayOf("Jo", "19"))
dataList2.add(arrayOf("Jung", "30"))
dataList2.add(arrayOf("Heo", "24"))
csvHelper.writeData(FILE_NAME_2, dataList2)
}
}
csv 파일을 내부 저장소에 저장하도록 했습니다, 경로는 '/data/data/<PackageName>/files' 입니다.
저장된 파일 확인하는 방법(Device File Explorer) (더보기를 선택하면 내용이 표시됩니다.)