2010-05-09 21 views

Trả lời

29

Không trực tiếp, không - getResourceAsStream() nhằm trả lại chế độ xem trên tài nguyên chỉ đọc.

Nếu bạn biết rằng tài nguyên là tệp có thể ghi, bạn có thể nhảy qua một số vòng, ví dụ:

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

Điều này sẽ hoạt động tốt trên các hệ thống kiểu Unix, nhưng đường dẫn tệp cửa sổ có thể gây khó tiêu này. Hãy thử nó và tìm ra, mặc dù, bạn có thể được OK.

+0

Thật không may, tôi không ổn. Tôi đã thêm một 'toString()' vào 'toUri()': 'tệp mới (resourceUrl.toURI(). ToString());'. Nhưng bây giờ, một 'FileNoFoundException' đang được ném vào dòng thứ ba:' "vfszip: \ C: \ jboss-5.1.0.GA \ server \ default \ deploy \ IMAss4.war \ WEB-INF \ classes \ wservices \ markers.txt (Tên tệp, tên thư mục hoặc cú pháp nhãn khối lượng không chính xác) "' –

+0

@Andreas: OK, đó là hệ thống tệp ảo bên trong của JBoss đang cản trở. Đây là lý do tại sao những gì bạn đang cố gắng làm là vô tình. – skaffman

+0

Vì vậy, có cách nào tôi có thể đặt tệp trong thư mục 'Trang Web' và đọc/ghi vào nó từ Dịch vụ Web của tôi không? (Hãy nhìn vào câu hỏi của tôi ở đây cho cấu trúc tài liệu của tôi: http://stackoverflow.com/questions/2797162/getresourceasstream-is-always-returning-null) –

10

Có cách nào để tôi có thể ghi vào tệp không?

Ai nói đó là tệp? Toàn bộ các điểm của getResourceAsStream() là để trừu tượng rằng đi bởi vì nó cũng có thể không đúng sự thật. Cụ thể, tài nguyên có thể nằm trong tệp JAR, có thể được đọc từ máy chủ HTTP hoặc thực sự bất kỳ điều gì mà người triển khai của ClassLoader đều có thể tưởng tượng.

Bạn thực sự không nên muốn để ghi vào tài nguyên thuộc phân phối chương trình của bạn. Đó là khái niệm sai lầm trong hầu hết các trường hợp. Cài đặt hoặc Dữ liệu do người dùng cụ thể sẽ chuyển đến Preferences API hoặc thư mục chính của người dùng.

+0

Sau đó, có cách để tôi có thể truy cập vào một tệp nằm ở vị trí trang jsp là gì? tức là trực tiếp trong thư mục 'Trang Web'? từ Dịch vụ Web tức là –

+3

Câu trả lời này không cung cấp câu trả lời. Nó phải là một bình luận. – dghubble

Các vấn đề liên quan