자바 코드 - 파일 조작 개념

폐쇄맨·2020년 12월 16일
0

자바 코드 모음

목록 보기
4/8

개요

Java 1.0 부터 있던 java.io.File과 Java 7 부터 도입된 NIO2 두 개의 API가 존재한다.

NIO2이 File보다 좋은점

  • 심볼릭 링크나 퍼미션을 다룰 수 있다.
  • 파일 덮어쓰기, 이동 및 복사를 간단하게 할 수 있다.
  • 파일의 변경을 감시할 수 있다.

java.io.File

파일 경로를 지정하여 인스턴스를 생성한다. 파일이나 디렉터리 조작을 위한 다양한 메서드가 있다.

// 절대 경로
File file1 = new File("C:\\Users\\minsoo\\workspace\\abc.txt");

// 현재 디렉토리 기준
File file2 = new File("abc.txt");
File file3 = new File("..\\workspace\\abc.txt");

// 부모 디렉터리와 짬뽕
File parent = new File("C:\\Users\\minsoo");
File file4 = new File(parent, "workspace\\abc.txt");

// 디렉토리 생성
File dir = new File("dir");
dir.mkdir();

// 파일 생성
File file = new File(dir, "test.txt");
file.createNewFile();

경로 구분 문자는 윈도우즈의 경우 "\", 유닉스 계열은 "/"을 사용한다. 따라서 경로를 하드 코딩하지 않기위해 File.separator 속성을 사용한다.

String sep = File.separator;

java.nio.file.Path

NIO2에서는 java.nio.file.Path로 경로를 나타낸다. Path 객체의 생성은 java.nio.file.FileSystemgetPath() 메서드를 사용한다.

// 파일 시스템 구하기
FileSystem fs = FileSystems.getDefault();

// 절대 경로
Path path1 = fs.getPath("C:\\Users\\minsoo\\workspace\\abc.txt");

// 경로 구분 문자 없이
Path path2 = fs.getPath("C:", "Users", "minsoo", workspace", "abc.txt");

// 현재 디렉토리 기준
Path path3 = fs.getPath("dir", "test.txt");

// java.nio.file.Paths로 Path 객체 생성
Path path = Paths.get("dir", "test.txt");

NIO2는 경로 자체를 나타내는 Path 클래스와 그 경로에 있는 파일이나 디렉토리 조작은 분리되어 있다. 파일이나 디렉터리에 대한 조작을 하려면 java.nio.file.Files의 static 메서드를 이용한다.

// 디렉토리 생성
Path dir = Paths.get("dir");
Files.createDirectory(dir);

// 파일을 작성
Path file = dir.resolve("test.txt");
Files.createFile(file);

File과 Path의 상호 변환

java.io.Filejava.nio.file.Path는 서로 변환이 가능하다.

File file = ...
Path path = file.toPath();

Paht path = ...
File file = path.toFile();
profile
폐쇄맨

0개의 댓글