개인 자료란 (JE)

  서버 커뮤니티

Profile 윈초 디벨로퍼 인증 개발자

wincho_ 8ff851e059fb4dd59be0b55d44f8149f

Profile

질문하기 Kotlin

[해결]코틀린에서 yaml파일을 읽는 방법이 궁금합니다.

2020.05.10 조회 수 375 추천 수 0
이해도 알고리즘 

코틀린에서 yaml을 읽을수 있는 방법이 무엇인가요?

.yml파일의 예시 내용

돼지와의 대화:
  npctype: Pig
  npcname: PPPPIIIGGG
  1:
    sender: player
    msg: 안녕하세요?
  2:
    sender: npc
    msg: 꿀꿀?

그곳에서 npctype부분, npcname부분을 변수에 담고 싶습니다. 그리고 1, 2에 내용은 배열에(sender라는 배열 / msg라는 배열 따로) 담으려 합니다 어떻게 해야할까요?




8개의 댓글

PatrickKR
2020.05.10

코틀린은 자바를 다루는 것과 매우 비슷합니다!
val config = YamlConfiguration.loadConfiguration(File(<파일주소>))
로 file을 불러와서,
val section = config.getConfigurationSection("돼지와의 대화")
val npctype = section.getString("npctype")
val npcname = section.getString("npcname")

val sender = ArrayList<String>()
val msg = ArrayList<String>()
val section1 = section.getConfigurationSection("1")
val section2 = section.getConfigurationSection("2")
sender.add(section1.getString("sender"))
sender.add(section2.getString("sender"))
msg.add(section1.getString("msg"))
msg.add(section2.getString("msg"))
혹시 오류가 있으면 알려주세요..! 이렇게 하면 npctype, npcname에 각각 String 형태로, sender와 msg에는 배열(ArrayList) 형태로 저장됩니다.

윈초
2020.05.10
@PatrickKR

흠.. 저는 자바에서 파일 불러오는건 안배웠어서.. 앞으로도 코틀린 배우다 막히는거 생기면 물어볼께요! 감사합니다!!

PatrickKR
2020.05.10
@윈초

네! 개발 열심히 하시길 응원하겠습니다!!!

윈초
2020.05.10
@PatrickKR

아 추가질문으로 1, 2 말고 1, 2, 3, 4...같이 숫자에 제한 없이 인식하게 하려면 어떻게 해야할까요?

돼지와의 대화:말고 다른거에도 적용되겐 어떻게 하나요?

그리고 배열의 최댓값은 어떻게 인식하나요?

@윈초

1. 1,2,3,4,... 같이 무한하게 계속 하려면 일단 돼지와의 대화 하위의 모든 section들을 가져와야 합니다. 

0317eceb7e942ecd331a941e9b836c53.PNG
이렇게 하면 돼지와의대화 하위의 내용을 npctype, npcname, sender, msg에 저장할 수 있습니다.

배열의 최대값이라면,, 배열의 크기를 말씀하시는건가요? 배열의 크기는 sender.size, msg.size 처럼 size를 구할 수 있습니다.
언제나 그렇듯이 배열에는 0번부타 저장하므로 만약 1~20처럼 순서대로 저장하셨다면 아마 배열에는 0~19까지 그대로 저장될 것 같네요.. 혹시 제 코드에 문제가 있다면 알려주시면 감사하겠습니다.
돼지와의 대화 말고 다른것도 하시려면, 배열을 하나 더 만들거나, 아니면 변수를 그 개수만큼 만들면 되는데, 잘 될지는 모르겠네요..

5dc499e6579a1708e05f9392883d084a.PNG 

한번 테스트 없이 써본 코드인데,,, 안타깝게도 지금 컴퓨터를 날려먹어서 테스트할 수 있는 환경이 아니네요 ㅠㅠ
이렇게하면 "아마도" 파일에서

7a2bb860cbd2f7d94d02c16ef7730e14.PNG

이런식으로 저장하신다면,

712eddbd87ab0438608effef94114608.PNG

아마 내부적으로 이렇게 저장되지 않을까 싶네요... 확실치 못한 답변 드려서 죄송합니다.


윈초
2020.05.11
@PatrickKR

음.. 그럼 알겠습니다! 확인 해보도록 할께요!!

PatrickKR
2020.05.11
@윈초

네! 화이팅하세요!!! 도움이 되었으면 좋겠습니다!

윈초
2020.05.11
@PatrickKR

매번 도와주셔서 감사합니다..!!!!