2016-10-02 54 views
0

在Python中,全局變量__file__是當前文件的完整路徑。有沒有辦法讓執行或編譯的.java文件的文件路徑?

System.getProperty("user.dir");似乎返回當前工作目錄的路徑。

我想獲取當前.java,.class或包文件的路徑。

然後使用它獲取圖像的路徑。

在Netbeans的我的項目文件結構如下所示:

// read image data from picture in package 
    try { 
     InputStream instream = TesseractTest.class 
      .getResourceAsStream("eurotext.tif"); 

     bufferedImage = ImageIO.read(instream);    
    } 
    catch (IOException e) { 
     System.out.println(e.getMessage()); 
    } 

這個代碼在使用實例中使用來自tess4jfiles http://pix.toile-libre.org/upload/original/1475433676.png


更新使用代碼從我所選擇的最佳答案建議。

我使用示例的完整代碼是here

回答

1

如果要加載存儲在類文件旁邊的圖像文件,請使用Class::getResourceAsStream(String name)

在你的情況,這將是:

try (InputStream instream = TesseractTest.class.getResourceAsStream("eurotext.tif")) { 
    // read stream here 
} 

這是假設你的構建系統複製.tif文件到您的build文件夾,通常是由IDE中完成的,而是需要在構建工具額外的設置一樣Ant和Gradle。

如果將程序打包到.jar文件,代碼仍然可以工作,再次假定您的構建系統將.tif文件包裝在.class文件旁邊。

-1
public class Main { 
public static void main(String[] args) throws Exception { 
    System.out.println(getPackageParent(Main.class, false));   

} 

public static String getPackageParent(Class<?> cls, boolean include_last_dot) 
     throws Exception { 
    StringBuilder sb = new StringBuilder(cls.getPackage().getName()); 
    if (sb.lastIndexOf(".") > 0) 
     if (include_last_dot) 
      return sb.delete(sb.lastIndexOf(".") + 1, sb.length()) 
        .toString(); 
     else 
      return sb.delete(sb.lastIndexOf("."), sb.length()).toString(); 
    return sb.toString(); 
} 

} 
+0

這將無助於訪問存儲在.jar文件內的.class文件旁邊的.tif文件。 – Andreas

相關問題