[java] Java, 현재 디렉토리에서 파일을 읽습니까?

현재 디렉토리 (.class 파일이 실행되는 동일한 디렉토리)에서 사용자 지정 파일 이름을 읽는 Java 프로그램을 원합니다.

즉, 사용자가 파일 이름을 “myFile.txt”로 지정하고 해당 파일이 이미 현재 디렉토리에있는 경우 :

reader = new BufferedReader(new FileReader("myFile.txt"));

작동하지 않습니다. 왜?

나는 창문에서 그것을 실행하고 있습니다.



답변

현재 디렉토리는 (필수적으로) .class 파일이있는 디렉토리가 아닙니다. 프로세스의 작업 디렉토리입니다. (예 : JVM을 시작할 때 있었던 디렉토리)

getResourceAsStream ()을 사용하여 .class 파일과 동일한 디렉토리 * 에서 파일을로드 할 수 있습니다 . 즉 당신이 가진 리더로 변환 할 수의 InputStream주지 InputStreamReader를 .


* 이 “디렉토리”는 클래스가로드 된 위치에 따라 실제로 jar 파일 일 수 있습니다.


답변

시험

System.getProperty("user.dir")

현재 작업 디렉토리를 반환합니다.


답변

위의 답변 중 어느 것도 나를 위해 작동하지 않습니다. 여기에 저에게 효과가 있습니다.

클래스 이름이 Foo.java라고 가정하고 Foo.java와 같은 폴더에있는 myFile.txt에 액세스하려면 다음 코드를 사용합니다.

URL path = Foo.class.getResource("myFile.txt");
File f = new File(path.getFile());
reader = new BufferedReader(new FileReader(f));


답변

프로젝트의 파일은 src 폴더에 상대적으로 사용할 수 있습니다. myfile.txt가 포함될 패키지 또는 폴더를 알고 있다면

----src
--------package1
------------myfile.txt
------------Prog.java

Prog.java에서 경로를 “src / package1 / myfile.txt”로 지정할 수 있습니다.


답변

당신의 파일이 당신의 클래스가있는 곳에있을 것이라는 것을 알고 있다면, 그 디렉토리는 당신의 클래스 경로에있을 것입니다. 이 경우이 솔루션이 문제를 해결할 것임을 확신 할 수 있습니다.

URL path = ClassLoader.getSystemResource("myFile.txt");
if(path==null) {
     //The file was not found, insert error handling here
}
File f = new File(path.toURI());

reader = new BufferedReader(new FileReader(f));


답변

이 시도:

BufferedReader br = new BufferedReader(new FileReader("java_module_name/src/file_name.txt"));


답변

“.”를 사용해보십시오. 예

File currentDirectory = new File(".");

이것은 나를 위해 일했습니다.