[英]How to read/write external data resource from within runnable JAR?
我想从命令行运行MyRunnableJar.jar
。 它需要从file_[1-4].dat
读取,进行一些处理,然后写入file_5.dat
。 所有上述数据文件都在文件系统中的MyRunnableJar.jar
附近。 例如:
super_directory/
MyRunnableJar.jar
data_resources/
file_1.dat
file_2.dat
file_3.dat
nested_data_directory/
file_4.dat
file_5.dat
( MyRunnableJar.jar
由Eclipse的Export
功能创建。)
我之所以要这样做,是因为该应用程序的计算量太大,无法在我的小笔记本电脑上运行。 相反,我想将其放在远程服务器上(包含所有必须访问的大数据文件)并在其中运行。
问题是,我不知道如何显示那些数据文件所在的可运行JAR。 如果需要,数据文件当然可以移动。 但是,将它们保留在JAR中不是一种选择,因为如果我想甚至更改一些应用程序代码,我都必须重新传输整个JAR,如果它包含数据文件,那将是很大的。 而且,如果file_5.dat
实际上在我的JAR中,我将无法写入。
我知道在Stack Exchange上有很多与此类似的问题,但是在每种情况下,问题都在某些重要方面略有不同。
编辑:
您真正需要做的就是找出.jar
文件所在的目录,而不管System.property("user.dir");
是什么System.property("user.dir");
返回或MyRunnableJar.jar
执行MyRunnableJar.jar
位置。 您不必假设当前与MyRunnableJar.jar
位于同一目录中,如果不是,则无法计算相对目录,因为您不再知道相对于该.jar
。
以下代码段将为您完成此操作:
return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
用您的main
类替换MyClass
然后,您可以使用它来构建要读取的目录的路径。 都是从那里来的蛋糕。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.