Java프로그래밍

[JAVA] 자바 폴더 생성 및 파일 생성시 java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 오류 해결방법

파일쓰기를 할때 디렉토리 경로가 없다면 자동으로 생성해주고 파일쓰기를 하면 되는데 개발환경은 윈도우이고 테스트서버는 리눅스 환경이라면?

파일 구분자는 OS마다 서로 다르다.

윈도우 운영체제는 파일 구분자로 \ 역슬래쉬 두 개를 사용한다.

리눅스 운영체제는 웹 경로 문자 열과 똑같이 파일 구분자로 / 를 사용한다.

Java는 이러한 서로 다른 파일 구분자를 처리하기 위해 JVM 이 실행되는 OS 환경에 맞는 파일 구 분자를 제공하는 API가 존재한다.

String fileSeparator = File.separator; 따라서, 위의 API를 이용하면 OS에 호환되는 파일 경로를 구성할 수 있다.

String filePath = “workplace” + File.separator + “test”;

위 filePath를 받아서 처리하는 함수가 아래와 같은 경우 윈도우OS에서는 오류가 발생할 수 있다. 참고로 리눅스 서버환경에서는 정상적으로 동작하는 코드이다.

File file = new File(filePath);

if(!file.exists()) {

     String[] temp = filePath.split(“/”);

     List<string> list = Arrays.asList(temp);

     list.remove(list.size()-1);

     String path = String.join(“/”);

     File directory = new File(path);

     if(!directory exists()) {

           directory.mkdirs();

      }

       file.createNewFile();

}

위 코드에서

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\  오류가 발생된다.

아래 코드와 같이 처리해주어야 오류가 발생하지않고 폴더 생성 후 파일이 생성된다.

…이상 생략

String fileSeparator = Matcher.quoteReplacement(File.separator);

String[] temp = filePath.split(fileSeparator);

….생략

String path = String.join(“/”);

…생략

error: Content is protected !!