2016-10-02 85 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

相关问题