>Java >Java베이스 >자바에서 파일을 읽는 방법

자바에서 파일을 읽는 방법

尚
원래의
2019-11-21 13:58:4161274검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.