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
'program story' 카테고리의 다른 글
Android Studio-gradle-diagnostics-XXXjar의 Gradle 동기화 오류 (0) | 2020.11.07 |
---|---|
MySQL에서 수백만 개의 행 삭제 (0) | 2020.11.07 |
하위 디렉토리에서 .gitignore 규칙을 무시할 수 있습니까? (0) | 2020.11.07 |
수신기에서 android : process =“: remote”를 사용해야합니까? (0) | 2020.11.07 |
저장된 텍스트 영역에서 표시 줄 바꿈 반응 (0) | 2020.11.06 |