2016-11-20 83 views

回答

1

有在FileInputStream API沒有直接的方法,但如果你真的願意,你可以使用Java反射API來獲取path(帶全路徑的實際文件名),如下圖所示:

FileInputStream fis = new FileInputStream(inputFile); 
Field field = fis.getClass().getDeclaredField("path"); 
field.setAccessible(true); 
String path = (String)field.get(fis); 
System.out.println(path); 

path變量(保存帶有路徑的文件名)在FileInputStream類中聲明爲私有最終字段,我們使用上面顯示的反射代碼來獲取它。

P.S:需要注意的是,上述方法不能保證實現所有的JVM實現的結果,因爲它沒有在規範中定義。

+0

這隻適用於具有這樣一個成員的'FileInputStream'的實現。合同中沒有任何要求。 – EJP

+0

事實上,無論是FileInputStream還是FileOutputStream,我都無法在JDK 1.6,1.7或1.8中找到這樣的字段。你測試過了嗎? – EJP

+0

是的,我測試了這個,工作正常 – developer

相關問題