반응형
InputStream을 FileInputStream으로 변환하는 방법
내 프로그램에 다음 줄이 있습니다.
InputStream Resource_InputStream=this.getClass().getClassLoader().getResourceAsStream("Resource_Name");
하지만 [Resource_InputStream]에서 FileInputStream을 어떻게 얻을 수 있습니까?
ClassLoader#getResource()
URI가 유효한 로컬 디스크 파일 시스템 경로를 나타내는 경우 대신 사용하십시오 .
URL resource = classLoader.getResource("resource.ext");
File file = new File(resource.toURI());
FileInputStream input = new FileInputStream(file);
// ...
그렇지 않은 경우 (예 : JAR), 최선의 방법은 임시 파일에 복사하는 것입니다.
Path temp = Files.createTempFile("resource-", ".ext");
Files.copy(classLoader.getResourceAsStream("resource.ext"), temp, StandardCopyOption.REPLACE_EXISTING);
FileInputStream input = new FileInputStream(temp.toFile());
// ...
즉, 실제로 그렇게하면 어떤 이점도 보지 못하거나 .NET FileInputStream
대신 필요한 도우미 클래스 / 메서드가 부족해야합니다 InputStream
. 가능하면 API를 수정하여 InputStream
대신 요청하십시오 . 타사 제품이라면 반드시 버그로 신고하세요. 이 특정 경우에는 해당 API의 나머지 부분에 물음표를 표시합니다.
간단히 말해서 FileInputStream 을 매개 변수 또는 변수 유형으로 사용하지 마십시오 . 추상 기본 클래스 (이 경우 InputStream 대신)를 사용하십시오.
다음과 같은 것이 필요합니다.
URL resource = this.getClass().getResource("/path/to/resource.res");
File is = null;
try {
is = new File(resource.toURI());
} catch (URISyntaxException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
FileInputStream input = new FileInputStream(is);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
그러나 실행 가능한 JAR이 아닌 IDE 내에서만 작동합니다. 나는 여기에 동일한 문제를 설명 했다 .
참고 URL : https://stackoverflow.com/questions/2353057/how-to-convert-inputstream-to-fileinputstream
반응형
'IT Share you' 카테고리의 다른 글
Go 채널은 어떻게 구현 되나요? (0) | 2020.12.12 |
---|---|
jQuery에서 $ .getJSON ()과 $ .ajax ()의 차이점 (0) | 2020.12.12 |
JSON을위한 좋은 CLI 도구는 무엇입니까? (0) | 2020.12.12 |
메모리 정렬 : alignof / alignas를 사용하는 방법? (0) | 2020.12.12 |
python pandas 데이터 프레임, 값에 의한 전달 또는 참조에 의한 전달 (0) | 2020.12.12 |