developer tip

Java 애플리케이션에 파일을 어떻게로드해야합니까?

optionbox 2020. 11. 12. 08:09
반응형

Java 애플리케이션에 파일을 어떻게로드해야합니까?


Java 애플리케이션에 파일을 어떻게로드해야합니까?


짧은 대답

다음 두 가지 방법 중 하나를 사용하십시오.

예를 들면 :

InputStream inputStream = YourClass.class.getResourceAsStream("image.jpg");

-

긴 대답

일반적으로 절대 경로를 사용하여 파일을로드하고 싶지 않습니다. 예를 들어, 도움이된다면 이렇게하지 마십시오.

File file = new File("C:\\Users\\Joe\\image.jpg");

이 기술은 최소한 두 가지 이유로 권장되지 않습니다. 첫째, 특정 운영 체제에 대한 종속성을 생성하여 응용 프로그램이 다른 운영 체제로 쉽게 이동할 수 없도록합니다. Java의 주요 이점 중 하나는 다양한 플랫폼에서 동일한 바이트 코드를 실행할 수 있다는 것입니다. 이와 같은 절대 경로를 사용하면 코드의 이식성이 훨씬 떨어집니다.

둘째, 파일의 상대적 위치에 따라이 기술은 외부 종속성을 생성하고 응용 프로그램의 이동성을 제한 할 수 있습니다. 파일이 응용 프로그램의 현재 디렉터리 외부에 있으면 외부 종속성이 생성되고 응용 프로그램을 다른 컴퓨터로 이동하려면 종속성을 알고 있어야합니다 (오류 발생 가능성).

대신 클래스 getResource()메서드를 사용하십시오 Class. 이것은 응용 프로그램을 훨씬 더 이식 가능하게 만듭니다. 다른 플랫폼, 시스템 또는 디렉토리로 이동할 수 있으며 여전히 올바르게 작동합니다.


getResource는 괜찮지 만 작업 디렉토리의 위치를 ​​제어 할 수있는 한 (일반적으로 가능) 상대 경로를 사용하는 것도 마찬가지로 작동합니다.

또한 구분 문자와 관련된 플랫폼 종속성은 File.separator , File.separatorChar 또는 System.getProperty ( "file.separator")를 사용하여 확인할 수 있습니다 .


구성 또는 데이터 (예 : 입력 파일) 또는 리소스로 파일을로드하고 있습니까?

  • 자원으로서 Will과 Justin이 제시 한 제안과 예를 따르십시오.
  • 구성 인 경우 ResourceBundle 또는 Spring을 사용할 수 있습니다 (구성이 더 복잡한 경우).
  • 내부 데이터를 처리하기 위해 파일을 읽어야하는 경우이 코드 조각이 도움이 될 수 BufferedReader file = new BufferedReader(new FileReader(filename))있으며 파일 file.readLine();을 닫는 것을 잊지 마세요를 사용하여 파일의 각 줄을 읽을 있습니다.

Windows에서도 유닉스 스타일 경로 구분 기호를 사용하는 데 문제가 없었습니다 ( File.separatorChar 를 확인하는 것이 좋지만 ).

ClassLoader.getResource () 를 사용하는 기술은 JAR 파일에서로드 할 읽기 전용 리소스에 가장 적합합니다. 때로는 관리자가 구성 할 수있는 파일이나 서버 애플리케이션에 유용한 애플리케이션 디렉토리를 프로그래밍 방식으로 결정할 수 있습니다 . (물론 사용자가 편집 할 수있는 파일은 System.getProperty ( "user.home") 디렉토리에 저장해야합니다 .)


public byte[] loadBinaryFile (String name) {
    try {

        DataInputStream dis = new DataInputStream(new FileInputStream(name));
        byte[] theBytes = new byte[dis.available()];
        dis.read(theBytes, 0, dis.available());
        dis.close();
        return theBytes;
    } catch (IOException ex) {
    }
    return null;
} // ()

참고 URL : https://stackoverflow.com/questions/6639/how-should-i-load-files-into-my-java-application

반응형