SecureDirectoryStream — 보안 디렉터리 스트림

SecureDirectoryStream — 보안 디렉터리 스트림

열려 있는 디렉터리에 상대적으로 위치한 파일에 대한 연산을 정의하는 DirectoryStream이에요. 정교하거나 보안에 민감한 애플리케이션이 경쟁 조건(race condition) 없이 파일 트리를 순회하거나 디렉터리를 다루기 위해 사용해요. 경쟁 조건은 일련의 파일 연산을 격리된 상태로 수행할 수 없을 때 발생할 수 있어요.

출처: Java API Reference

본문

이 인터페이스가 정의하는 각 파일 연산은 상대 경로를 지정해요. 디렉터리가 열려 있는 동안 공격자가 그 디렉터리를 옮기거나 바꿔치기해도, 파일에 대한 모든 접근은 열려 있는 디렉터리에 상대적이에요. SecureDirectoryStream은 가상 작업 디렉터리로도 사용할 수 있어요.

SecureDirectoryStream은 기반 운영체제의 해당 지원을 요구해요. 구현이 이 기능을 지원하면 newDirectoryStream이 반환한 DirectoryStreamSecureDirectoryStream이며, 이 인터페이스의 메서드를 호출하려면 그 타입으로 캐스팅해야 해요.

  • SecureDirectoryStream<T> newDirectoryStream(T dir, LinkOption... options) throws IOException — 디렉터리의 항목들을 반복하는 SecureDirectoryStream을 만들어요.
  • SecureDirectoryStream<T> newDirectoryStream(T dir, DirectoryStream.Filter<? super T> filter, LinkOption... options) throws IOException — 지정된 필터로 걸러진 항목들에 대한 SecureDirectoryStream을 만들어요.
  • T newByteChannel(T path, Set<? extends OpenOption> options, FileAttribute<?>... attrs) throws IOException — 디렉터리에 상대적인 경로로 바이트 채널을 열거나 만들어요.
  • SeekableByteChannel newByteChannel(T path, FileAttribute<?>... attrs) throws IOException — 디렉터리에 상대적인 경로로 새 채널을 만들어요.
  • void deleteFile(T path) throws IOException — 파일을 삭제해요.
  • void deleteDirectory(T path) throws IOException — 빈 디렉터리를 삭제해요.
  • void move(T srcpath, SecureDirectoryStream<T> targetdir, T targetpath) throws IOException — 디렉터리에 상대적인 경로를 다른 디렉터리로 옮겨요.

더 알아보기 (Learn more)