program story

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

inputbox 2020. 11. 7. 09:28
반응형

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"));

이것도 작동합니다.

Path file=Paths.get("Your file path");
InputStream is=Files.newInputStream(file);
BufferedReader br=new BufferedReader(new InputStreamReader(is));

참고 URL : https://stackoverflow.com/questions/1480398/java-reading-a-file-from-current-directory

반응형