2015-11-06 87 views
0

我刚刚想出了如何从我的程序(其中EBookReader是我的项目)中将zip压缩文件解压缩到文件夹EBookReader/books中。现在我有一个/books/testbook/1.png(解压缩的内容),但无论我做什么,我都无法让程序在该路径上显示图像。JavaFX图像路径问题

System.out.println(loadedBook.returnPage()); 
Image page = new Image(getClass().getResourceAsStream(loadedBook.returnPage())); 
ImageView imagePage = new ImageView(); 
imagePage.setImage(page); 
imagePage.setFitWidth(350); 
imagePage.setFitHeight(500); 
imagePage.setPreserveRatio(true); 
imagePage.setSmooth(true); 
imagePage.setCache(true); 
border.setCenter(imagePage); 

loadedBook.returnPage()返回字符串“F:\ EbookReader \书\ testBook \ 1.png”,这恰好是图像1.png的位置,即使我手动输入串入图像位置它仍然不起作用。我听说我并不需要getClass()垃圾,但如果没有这种垃圾,它也无法工作。我已经得到它的唯一方法是如果我把图像直接在F:\EbookReader\src\ebookreader

编辑:错误是输入流为空!

回答

0

getResourceAsStream()正在等待相对于当前类的位置或相对于类路径的位置。你展示的道路当然与这两者无关。

我建议使用Imageconstructor taking a URL和做

Image page = new Image(new File(loadedBook.returnPage()).toURI().toString()); 

你也可以做

Image page = new Image(new FileInputStream(new File(loadedBook.returnPage()))); 
+0

我最终使用做到了:文件镜像文件=新的文件(loadedBook.returnPage()); Image page = new Image(imageFile.toURI()。toString());但你的方式是很整洁。 Thx的帮助! –