인텔리제이에서 FileInputStream같은 파일입출력을 수행하던 도중 분명히 소스코드와 파일이 같은 디렉토리에 있는데 읽어올 수 없는 경우가 있다.
다음 예시를 보자.
class FileViewer {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("data.txt");
int data = 0;
while ((data = fis.read()) != -1) {
char c = (char) data;
System.out.print(c);
}
}
}
<결과>
Exception in thread "main" java.io.FileNotFoundException: data.txt (No such file or directory)
분명 실행된 코드와 data.txt가 같은 디렉토리에 있는데 파일을 찾을 수 없단다...
뭐가 문제일까?
이는 인텔리제이에서 소스가 동작하는 working directory와 소스 코드가 실제로 존재하는 directory가 다르기 때문이다.
일반적으로 소스코드의 working directory는 src/main이다. 그런데 실제 소스 코드가 존재하는 directory는 src/main/java/week13이다.
그래서 두 가지 해결 방안이 있다.
1. data.txt의 위치를 src/main으로 옮긴다.
2. working directory를 src/main/java/week13으로 변경한다.
working directory 경로는 실행(Run)아이콘 왼쪽에 있는 메뉴에 Edit Configurations... 을 통해 설정할 수 있다.
'java > intelliJ' 카테고리의 다른 글
[Intellij] 환경 변수 등록 (2) | 2021.07.21 |
---|---|
[Intellij] 디버그 (0) | 2021.07.13 |
[Intellij] import문 자동 정리하기 (1) | 2021.07.13 |
[Intellij] JUnit5 Stateful Test (0) | 2021.07.05 |
[Intellij] 인텔리제이 단축키, 템플릿 정리 - Mac (2) | 2021.06.24 |