이 글은 Dart 프로그래밍 언어에서 파일 입출력을 처리하는 방법을 소개합니다. Dart의 dart:io 라이브러리를 활용하여 텍스트 및 바이너리 파일을 읽고 쓰는 방법을 설명하고, 파일 및 디렉터리 조작에 필요한 몇 가지 예제를 통해 다트 입문자가 실제로 사용할 수 있도록 설명합니다.
Dart 파일 입출력
소개 Dart에서 파일 입출력은 파일 시스템의 파일이나 디렉토리에 접근하고 데이터를 읽거나 쓰는 작업을 말합니다. Dart에서는 dart:io
라이브러리를 사용하여 파일 입출력을 수행할 수 있습니다. 이 학습서에서는 Dart의 파일 입출력 방법을 다양한 예제와 함께 설명하겠습니다.
파일 읽기
텍스트 파일 읽기
텍스트 파일을 읽는 방법은 간단합니다. Dart에서는 File
클래스를 사용하여 파일을 읽습니다. 파일의 내용을 문자열로 읽어들인 후 출력하는 예제를 살펴보겠습니다.
import 'dart:io';
void main() async {
// 파일 경로 설정
var file = File('example.txt');
// 파일 읽기
try {
String contents = await file.readAsString();
print('파일 내용:');
print(contents);
} catch (e) {
print('파일을 읽는 중 오류 발생: $e');
}
}
위 코드는 example.txt
파일의 내용을 읽어 출력합니다. 파일을 읽는 작업은 비동기적으로 수행되므로 await
키워드를 사용합니다.
바이너리 파일 읽기
바이너리 파일은 텍스트가 아닌 데이터를 포함한 파일을 의미합니다. Dart에서는 readAsBytes
메서드를 사용하여 파일을 바이너리 형식으로 읽을 수 있습니다.
import 'dart:io';
void main() async {
// 파일 경로 설정
var file = File('example.bin');
// 바이너리 파일 읽기
try {
List<int> bytes = await file.readAsBytes();
print('파일 크기: ${bytes.length} 바이트');
} catch (e) {
print('파일을 읽는 중 오류 발생: $e');
}
}
이 예제는 example.bin
파일의 바이너리 데이터를 읽어 바이트 배열로 저장하고, 파일의 크기를 출력합니다.
파일 쓰기
텍스트 파일 쓰기
텍스트 파일에 데이터를 쓰기 위해서는 writeAsString
메서드를 사용합니다. 파일에 데이터를 쓰기 전, 기존 파일이 존재하면 덮어씁니다.
import 'dart:io';
void main() async {
// 파일 경로 설정
var file = File('example.txt');
// 파일 쓰기
try {
await file.writeAsString('안녕하세요, Dart 파일 입출력 예제입니다.');
print('파일 쓰기 완료');
} catch (e) {
print('파일을 쓰는 중 오류 발생: $e');
}
}
이 코드는 example.txt
파일에 문자열을 작성합니다.
바이너리 파일 쓰기
바이너리 데이터를 파일에 쓰기 위해서는 writeAsBytes
메서드를 사용합니다.
import 'dart:io';
void main() async {
// 파일 경로 설정
var file = File('example.bin');
// 바이너리 데이터 생성
List<int> bytes = [72, 101, 108, 108, 111]; // 'Hello'를 의미하는 바이트 배열
// 파일 쓰기
try {
await file.writeAsBytes(bytes);
print('파일 쓰기 완료');
} catch (e) {
print('파일을 쓰는 중 오류 발생: $e');
}
}
이 코드는 example.bin
파일에 'Hello' 문자열을 의미하는 바이트 배열을 작성합니다.
파일 및 디렉토리 조작
파일 존재 여부 확인
파일이 존재하는지 확인하려면 exists
메서드를 사용합니다.
import 'dart:io';
void main() async {
// 파일 경로 설정
var file = File('example.txt');
// 파일 존재 여부 확인
bool exists = await file.exists();
print('파일 존재 여부: $exists');
}
파일 삭제
파일을 삭제하려면 delete
메서드를 사용합니다.
import 'dart:io';
void main() async {
// 파일 경로 설정
var file = File('example.txt');
// 파일 삭제
try {
await file.delete();
print('파일 삭제 완료');
} catch (e) {
print('파일을 삭제하는 중 오류 발생: $e');
}
}
디렉토리 생성 및 삭제
디렉토리를 생성하고 삭제하려면 Directory
클래스를 사용합니다.
import 'dart:io';
void main() async {
// 디렉토리 경로 설정
var dir = Directory('example_dir');
// 디렉토리 생성
try {
await dir.create();
print('디렉토리 생성 완료');
} catch (e) {
print('디렉토리를 생성하는 중 오류 발생: $e');
}
// 디렉토리 삭제
try {
await dir.delete();
print('디렉토리 삭제 완료');
} catch (e) {
print('디렉토리를 삭제하는 중 오류 발생: $e');
}
}
예제 코드 모음
예제 1: 텍스트 파일 읽기와 쓰기
import 'dart:io';
void main() async {
var file = File('example.txt');
// 파일에 쓰기
await file.writeAsString('이것은 Dart 파일 입출력 예제입니다.');
print('파일 쓰기 완료');
// 파일 읽기
String contents = await file.readAsString();
print('파일 내용:');
print(contents);
}
예제 2: 바이너리 파일 읽기와 쓰기
import 'dart:io';
void main() async {
var file = File('example.bin');
List<int> bytes = [68, 97, 114, 116]; // 'Dart'를 의미하는 바이트 배열
// 파일에 쓰기
await file.writeAsBytes(bytes);
print('바이너리 파일 쓰기 완료');
// 파일 읽기
List<int> readBytes = await file.readAsBytes();
print('읽은 바이너리 데이터: $readBytes');
}
예제 3: 파일 존재 여부 확인 및 삭제
import 'dart:io';
void main() async {
var file = File('example.txt');
// 파일 존재 여부 확인
bool exists = await file.exists();
print('파일 존재 여부: $exists');
if (exists) {
// 파일 삭제
await file.delete();
print('파일 삭제 완료');
} else {
print('파일이 존재하지 않습니다.');
}
}
---
'프로그래밍 언어 > Dart' 카테고리의 다른 글
Dart 프로그래밍 JSON 데이터 처리. JSON 파싱과 직렬화 - Dart 기초 #23 (0) | 2024.07.01 |
---|---|
Dart 패키지 사용법. http 패키지 예제와 함께 배우기 - Dart 기초 #21 (0) | 2024.06.27 |
Dart 입문자를 위한 라이브러리 활용법. 프로그래밍과 파일 입출력 예시 코드 - Dart 기초 #20 (0) | 2024.06.26 |
Dart 예외 처리 try-catch 구문. 사용자 정의 예외와 finally 블록 사용하기 - Dart 기초 #19 (0) | 2024.06.25 |
Dart Stream 사용법 및 예제 통한 비동기 처리와 필터링 프로그래밍 - Dart 기초 #18 (0) | 2024.06.24 |