파일 조작

ssh·2023년 12월 11일
0

dart

목록 보기
16/22

개요

  • Dart에서 파일과 관련된 코드를 다루려면 dart:io 라이브러리를 사용해야 한다.
  • 해당 라이브러리를 import하면 파일 작업을 수행할 수 있다.

File 경로 지정 및 open

  • File이라는 생성자를 통해 파일의 경로를 전달한다.
  • 만약 해당 경로에 파일이 없다면 새로 생성된다.
    File file = File('파일 경로');
    File file2 = File('file.txt');

File read

  • 파일을 읽어올 때는 파일 경로가 담겨 있는 file에서 readAsStringSync() 메서드를 호출해 파일 내부를 읽고, print로 출력한다.
    • 파일을 읽는다.
      file.readAsStringSync();

File write

  • 파일 내부에 무언가를 쓸 때는 변수나 문자열에 쓸 내용을 넣어두고 writeAsStringSync() 메서드에 해당 변수를 넣으면 변수에 적혀져 있던 내용이 파일에 들어간다.
    • 파일에 내용을 쓴다.
      file.writeAsStringSync('hello dart');
    • 내용을 누적해서 쓰고 싶다면 mode: FileMode.append를 추가한다.
      file.writeAsStringSync('dart study', mode: FileMode.append);

예외처리

  • try-catch문으로 예외처리를 할 수 있다.
    • if문으로 제약 조건
      import 'dart:io';
      
      void main() {
        final File file = File('text.txt');
      
        if (file.existsSync()) {
          final text = file.readAsStringSync();
          print(text);
        } else {
          print('파일이 없습니다.');
        }
      }
    • try-catch문
      import 'dart:io';
      
      void main() {
        final File file = File('text.txt');
      
        try {
          final text = file.readAsStringSync();
          print(text);
        } catch (e) {
          print('no file');
        }
      }

File Copy

  • 원본 파일의 복사 경로와 복사할 파일의 위치를 생성한다.

  • readAsStringSync() 메서드로 원본 파일을 읽어오고 읽어온 내용을 복사할 파일에 writeAsStringSync() 메서드로 써주면 파일이 복사된다.

      final File file = File('text.txt');
      final File copyFile = File('copy_of_text.txt');
    
      final String content = file.readAsStringSync();
      copyFile.writeAsStringSync(content);
      print('파일이 성공적으로 복사되었습니다.');

File Delete

  • File(path)로 특정 경로에 대한 파일을 생성할 수 있으며, File#delete() 메소드로 파일을 삭제할 수 있다.
  • 동기적인 방식으로 삭제하려면 File#deleteSync()를 사용한다.
    import 'dart:io';
    
    void main() {
      File file = File('경로/파일명');
      file.delete();
    }

Directory Delete

  • 디렉토리의 경우, Directory(path)로 객체를 생성할 수 있으며, delete() 메소드로 삭제할 수 있다.
  • 디렉토리 하위 파일도 함께 삭제하고 싶을 때는 recursive:true를 인자로 전달해야 한다.
    • 동기적인 방식으로 삭제하려면 Directory#deleteSync()를 사용한다.
      import 'dart:io';
      
      void main() {
        Directory directory = Directory('경로/디렉토리명');
        directory.delete(recursive: true);
      }

File/Directory exists() & delete()

  • file과 directory는 exists() 메소드를 제공하며 파일의 존재 유무를 확인할 수 있다.
    • 파일/디렉토리가 존재하는지 체크 후, 삭제할 수 있다.
      • 코드
        import 'dart:io';
        
        void main() {
          File file = File('경로/파일명');
          file.exists().then((exists) {
            if (exists) {
              // 파일이 존재하는 경우에만 삭제합니다.
              file.delete();
              print('파일이 삭제되었습니다.');
            } else {
              print('파일이 존재하지 않습니다.');
            }
          });
        }
    • 동기적인 방식으로 존재 확인 및 삭제하려고 한다면, 아래와 같이 sync 메소드를 사용하면 된다.
      • 코드
        import 'dart:io';
        
        void main() {
          File file = File('경로/파일명');
          if (file.existsSync()) {
            file.deleteSync();
          }
        }

0개의 댓글

관련 채용 정보