2010-05-09 4 views

답변

29

직접적으로 아니요, 아니요 - getResourceAsStream()은 읽기 전용 리소스에 대한보기를 반환하기위한 것입니다.

리소스가 쓰기 가능한 파일이라는 것을 알고 있다면 일부 농구대를 뛰어 넘을 수 있습니다.

URL resourceUrl = getClass().getResource(path); 
File file = new File(resourceUrl.toURI()); 
OutputStream output = new FileOutputStream(file); 

유닉스 스타일 시스템에서는 잘 작동하지만 윈도우 파일 경로는 이러한 소화 불량을 일으킬 수 있습니다. 그것을 시도하고 알아 내십시오, 그러나, 당신은 OK일지도 모르다.

+0

불행히도, 나는 괜찮지 않았습니다. 나는 toUri()에 toString()을 추가해야했다 : new file (resourceUrl.toURI(). toString());'. 하지만 이제는 세 번째 줄에'FileNoFoundException'이 발생합니다 : vfszip : \ C : \ jboss-5.1.0.GA \ server \ default \ deploy \ IMAss4.war \ WEB-INF \ classes \ wservices \ markers.txt (파일 이름, 디렉토리 이름 또는 볼륨 레이블 구문이 올바르지 않습니다.) " –

+0

@Andreas : OK, JBoss의 내부 가상 파일 시스템입니다. 이것이 당신이하려고하는 것이 어쩔 수없는 이유입니다. – skaffman

+0

그렇다면'Web Pages' 폴더에 파일을 넣고 웹 서비스에서 읽고 쓸 수있는 방법이 있습니까? (내 질문에 대한 내 문서의 구조에 대한보십시오 : http://stackoverflow.com/questions/2797162/getresourceasstream-is-always-returning-null) –

10

파일에도 쓸 수있는 방법이 있습니까?

누가 파일이라고 말합니까? getResourceAsStream()의 요점은 그것이 사실이 아닐 수도 있기 때문에 그것을 멀리 추상화하는 것입니다. 특히 리소스는 JAR 파일에 있거나 HTTP 서버에서 읽을 수 있거나 실제로 구현자가 상상할 수있는 모든 것일 수 있습니다.

은 프로그램 배포에 포함 된 리소스에 쓰기 위해을 쓰고 싶지 않습니다. 대부분의 경우 개념적으로 잘못된 행동입니다. 설정 또는 사용자 별 데이터는 Preferences API 또는 사용자의 홈 디렉토리로 이동해야합니다.

+0

그럼 거기에있는 파일에 액세스 할 수있는 방법입니다 JSP 페이지는 무엇입니까? 즉'Web Pages' 폴더에 직접 있습니까? ie –

+3

웹 서비스에서이 답변은 답을 제공하지 않습니다. 그것은 주석이어야합니다. – dghubble