Dart 기본 문법 (9) - 파일 조작, 데이터 형식

데구르르·2023년 12월 11일
0

Flutter

목록 보기
9/17

파일조작

간단하게만 알아보자면 3단계로 구성된다.

  1. 파일을 연다 ⇒ final fileName = File('파일.txt');
  2. 파일을 읽거나 쓴다 ⇒ 읽기: fileName.writeAsStringSync('Hello World');
    쓰기: fileName.readAsStringSync();
  3. 파일을 닫는다 ⇒ Dart에서는 dart:io 라이브러리가 자동으로 파일을 닫아주기 때문에 따로 코드를 작성할 필요는 없지만, dart:io가 비동기적이기 때문에 파일 작업을 할 때는 비동기로 처리해야 한다는 것을 알아두자.
import 'dart:io';

void main() {
  void copy (String source, String target) {
    final sourceFile = File(source);
    final targetFile = File(target);

    sourceFile.writeAsStringSync("졸음껌과 박하사탕");

    final text = sourceFile.readAsStringSync();
    targetFile.writeAsStringSync(text);
  }

  copy("source.txt", "target.txt");
}

데이터 형식

: 대부분 라이브러리를 지원하니 적극 활용하자 -> https://pub.dev/packages

csv

데이터를 콤마로 나눈 형식으로, 엑셀 데이터와 비슷하다.
ex) String str = “홍길동”, ”한석봉”, “신사임당”;

properties

key-value 쌍으로 읽고 쓰기를 가능하게 하는 클래스이다. 설정 정보를 관리하고 읽어오기 위해 사용된다.

    # 예시 프로퍼티 파일
    database.url=jdbc:mysql://localhost:3306/mydb
    database.username=myuser
    database.password=mypassword

XML

<> 태그를 활용한 기술 방식으로 포함관계를 기술할 수 있다. HTML을 다뤄봤다면 익숙할 것이다. 하지만 DOM Parser, SAX Parser 등을 통해 파서를 따로 제작해야 해서 잘 쓰이지 않는다.

json

네트워크 통신에서 가장 많이 사용되고, XML에 비해 적은 용량을 차지한다. []로 리스트, {}로 객체를 구현한다. key-value 쌍으로 데이터가 표현된다. 데이터를 넣을때 꼭 큰 따옴표를 사용하자!

final json = {
	"name" = "Bubble Gum",
	"age" = 32,
};

직렬화

데이터를 일련의 바이트 또는 다른 형식으로 변환하는 과정으로, Dart에서는 클래스 내용을 Json 형태로 변환하는 것으로 본다.
toJson()으로 객체를 Json 형태로 표현한다

    Map<String, dynamic> toJson() => {
    	"name" : name,
    	"age" : age,
    }

jsonEncode() : Map을 json형식의 String으로 변환해준다. 단순히 toJson()을 쓰면 큰 따옴표가 들어가지 않은 형식의 String으로 리턴되어 나중에 데이터를 다시 json화할 수 없다.

역직렬화

직렬화된 데이터를 다시 원래의 데이터 구조로 변환하는 과정으로, Json 형태를 클래스 내용으로 변환하는 것이다. fromJson() 생성자로 json을 객체로 만든다.

User.fromJson(Map<String, dynamic> json)
	: name = json["name"],
		age = json["age"]; 

jsonDecode() : String 형태의 Json을 Map으로 변환할 때 사용된다.

느낀점

여기서부터는 객체지향과 살짝 멀어진 개념을 배우는 것 같다. 자바스크립트에서 자주 사용되는데 앱개발에서도 쓰이는 것 같아 신기했다. json은 서버와 클라이언트간의 소통을 위해 쓰인다고 하는데, 나중에 백엔드와 상호작용할 때 잘 활용할 수 있도록 많이 복습해둬야겠다.

profile
개발 기록

0개의 댓글