2010-05-09 21 views

Odpowiedz

29

Nie bezpośrednio, nie - getResourceAsStream() ma na celu zwrócenie widoku na zasoby tylko do odczytu.

Jeśli wiesz, że zasób jest plikiem do zapisu, możesz przeskoczyć przez kilka kółek, np.

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

To powinno działać dobrze w systemach typu UNIX, ale ścieżki plików okna może dać to niestrawność. Spróbuj i przekonaj się, że możesz być w porządku.

+0

Niestety, nie było dobrze. Musiałem dodać 'toString()' do 'toUri()': 'new File (resourceUrl.toURI(). ToString());'. Ale teraz w trzeciej linii jest zgłaszany wyjątek 'FileNoFoundException':" "vfszip: \ C: \ jboss-5.1.0.GA \ server \ default \ deploy \ IMAss4.war \ WEB-INF \ classes \ wservices \ markers.txt (Nazwa pliku, nazwa katalogu lub składnia etykiety woluminu jest nieprawidłowa) "" –

+0

@Andreas: OK, to wewnętrzny wirtualny system plików JBoss wchodzi w drogę. Właśnie dlatego to, co próbujesz zrobić, jest niewskazane. – skaffman

+0

Czy istnieje zatem jakikolwiek sposób, aby umieścić plik w folderze 'Strony WWW' i odczytać/zapisać go w mojej usłudze sieciowej? (Spójrz na moje pytanie dotyczące mojej struktury dokumentów: http://stackoverflow.com/questions/2797162/getresourceasstream-is-always-returning-null) –

10

Czy jest jakiś sposób, aby napisać do pliku również?

Kto powiedział, że to plik? Cały punkt getResourceAsStream() polega na usunięciu tego, ponieważ może to nie być prawdą. W szczególności, zasób może znajdować się w pliku JAR, może być odczytywany z serwera HTTP, lub naprawdę wszystko, co może sobie wyobrazić realizator z ClassLoader.

Naprawdę nie powinieneś chcieć, aby napisał do zasobu, który jest częścią dystrybucji programu. W większości przypadków koncepcyjnie jest to niewłaściwe. Ustawienia lub dane specyficzne dla użytkownika powinny być dostępne w katalogu domowym użytkownika Preferences API.

+0

Czy istnieje sposób, w jaki mogę uzyskać dostęp do pliku, który znajduje się strony jsp są? tj. bezpośrednio w folderze 'Strony WWW'? z usługi sieci Web, tj. –

+3

Ta odpowiedź nie dostarcza odpowiedzi. To powinien być komentarz. – dghubble

Powiązane problemy