Java에서 파일을 읽는 방법: 1. 현재 사용자 디렉터리를 기준으로 [java.io] 메서드를 사용하여 읽습니다. 2. 클래스 경로를 기준으로 읽기를 기준으로 [java.lang.ClassLoader] 메서드를 사용하여 읽습니다. .
Java에서 파일을 읽는 방법:
Java에서 파일을 읽는 두 가지 방법: java.io 및 java.lang.ClassLoader
// java.io: File file = new File("..."); FileInputStream fis = new FileInputStream("..."); FileReader fr = new FileReader("..."); //ClassLoader: ClassLoader loader = XXXClass.class.getClassLoader(); ClassLoader loader2 = Thread.currentThread().getContextClassLoader(); URL url = loader.getResource("..."); File file = new File(url.getFile()); InputStream input = loader.getResourceAsStream("...");
1 java.io 패키지의 클래스 상대 경로 이름은 항상 현재 사용자 디렉터리를 기준으로 분석됩니다. 즉, 상대 경로가 제대로 작동하는지 여부는 user.dir 값에 따라 달라집니다. user.dir 시스템 속성은 JVM이 시작될 때 설정되며 일반적으로 Java 가상 머신의 호출 디렉터리, 즉 java 명령이 실행되는 디렉터리입니다.
Tomcat/jboss 컨테이너의 경우 user.dir은 %home/bin%/ 디렉터리입니다. 왜냐하면 이 디렉터리가 웹 컨테이너를 시작하는 곳이기 때문입니다.
Eclipse에서 프로그램을 실행할 때 eclipse는 user.dir의 값을 설정합니다. to 프로젝트의 루트 디렉터리
사용자 디렉터리는 System.getProperty("user.dir")를 사용하여 볼 수 있습니다
그래서 java.io를 사용하여 상대 경로이든 절대 경로이든 파일을 읽는 것은 좋은 습관이 아닙니다. 사용하지 않으면 (JavaEE에서) 사용하지 마세요.
2 ClassLoader
Class.getResource()를 사용하는 방법에는 절대 경로와 상대 경로가 있습니다. 절대 경로는 /로 시작하고 클래스 경로 또는 jar 패키지의 루트 디렉터리에서 검색합니다.
상대 경로는 현재 클래스가 있는 디렉터리에 상대적이므로 .. 또는 .
ClassLoader.getResource()는 절대 경로만 사용할 수 있으며 / 로 시작하지 않습니다.
리소스 파일을 읽는 이 두 가지 방법은 user.dir 또는 특정 배포 환경에 의존하지 않습니다(JavaEE).
선택 방법
java.io:
상대 경로를 읽습니다. 현재 사용자 디렉토리는 디스크 파일을 다루거나 순수 Java 프로젝트에서 사용하는 데 중점을 둡니다.
ClassLoader 메소드가 더 다양하기는 하지만 javaEE 환경이 아니라면 파일을 읽기 위해 클래스패스 경로를 찾는 것은 무리입니다.
java.lang.ClassLoader:
클래스 경로에 대한 상대 경로를 읽습니다. javaEE 환경에서는 이 방법을 사용하는 것이 좋습니다.
일반적으로 ClassLoader는 너무 큰 파일을 읽을 수 없습니다. 웹 프로젝트의 구성 파일을 읽어야 하는 경우에도 먼저 IO 패키지를 사용해야 합니다. ClassLoader를 통해 파일을 읽은 다음 File이나 다른 객체에 전달하는 것이 좋습니다.
더 많은 Java 지식을 보려면 java 기본 튜토리얼을 주목하세요.
위 내용은 자바에서 파일을 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!