카테고리 없음

Dart dart:io 라이브러리란? 파일·네트워크·프로세스까지 한 번에 정리

idea9329 2026. 1. 21. 10:19
728x90
반응형

Dart에서 운영체제(OS) 기능을 직접 다루고 싶을 때 가장 먼저 만나게 되는 표준 라이브러리가 바로 dart:io입니다.

파일을 읽고 쓰거나, HTTP 서버를 열거나, 소켓 통신을 하거나, 외부 프로세스를 실행하는 등 시스템 레벨 작업을 맡는 핵심 모듈이에요.


dart:io 한 줄 정의

dart:io는 Dart VM 환경에서 파일/디렉터리, 네트워크(HTTP·Socket), 프로세스, 환경/플랫폼 정보 등을 제공하는 표준 라이브러리입니다.


어디에서 쓸 수 있나? (중요 포인트)

dart:io는 브라우저(Web)에서는 사용할 수 없습니다.
브라우저는 보안상 로컬 파일 시스템/소켓/프로세스에 직접 접근이 제한되기 때문이에요.

실행 환경dart:io 사용

Dart 서버 (Dart VM) ✅ 가능
Flutter Android/iOS ✅ 가능
Flutter Desktop (Windows/macOS/Linux) ✅ 가능
Flutter Web ❌ 불가

dart:io로 할 수 있는 대표 기능 5가지

1) 파일/디렉터리 다루기

  • File, Directory로 생성/읽기/쓰기/삭제
  • 로그 파일 처리, 설정 파일 저장, 캐시 파일 관리 등
import 'dart:io';

void main() {
  final file = File('test.txt');
  file.writeAsStringSync('Hello Dart');
  print(file.readAsStringSync());
}

2) HTTP 서버 열기 (HttpServer)

간단한 API 서버/웹훅 수신기 등을 만들 때 활용합니다.

import 'dart:io';

Future<void> main() async {
  final server = await HttpServer.bind('0.0.0.0', 8080);
  await for (final req in server) {
    req.response
      ..write('OK')
      ..close();
  }
}

3) HTTP 요청 보내기 (HttpClient)

외부 API 호출, 내부 통신 등에 사용합니다.

import 'dart:io';

Future<void> main() async {
  final client = HttpClient();
  final request = await client.getUrl(Uri.parse('https://example.com'));
  final response = await request.close();
  print(response.statusCode);
  client.close();
}

4) 소켓 통신 (TCP/UDP)

실시간 통신, 커스텀 프로토콜, 장비 연동 등에서 사용합니다.

import 'dart:io';

Future<void> main() async {
  final socket = await Socket.connect('127.0.0.1', 3000);
  socket.write('hello');
  await socket.flush();
  socket.destroy();
}

5) 프로세스 실행 (Process)

서버 운영 자동화, 시스템 명령 실행, 외부 도구 호출 등에 좋습니다.

import 'dart:io';

Future<void> main() async {
  final result = await Process.run('ls', ['-l']);
  print(result.stdout);
}

dart:io vs dart:html 차이 (혼동 방지)

구분dart:iodart:html

주 사용처 서버/모바일/데스크톱 웹(브라우저)
파일 시스템 접근
소켓(TCP)
DOM 조작
실행 엔진 Dart VM 브라우저

실무에서 자주 쓰는 클래스/키워드 모음

영역자주 쓰는 것

파일 File, Directory, FileSystemEntity
HTTP HttpServer, HttpClient, HttpRequest, HttpResponse
소켓 Socket, ServerSocket, RawDatagramSocket
OS/환경 Platform, stdin/stdout/stderr
프로세스 Process, ProcessStartMode

마무리: dart:io를 언제 선택하면 좋을까?

  • 서버 개발(Dart 백엔드), 콘솔 앱, 데스크톱 앱, 모바일에서 로컬 파일 저장/네트워크 처리가 필요하면 → dart:io
  • 웹 앱(Flutter Web 포함) 에서 브라우저에서 돌릴 거면 → dart:io는 사용 불가, 다른 방식으로 접근해야 함
728x90
반응형