我使用XML文档作为多个类似文档的模板(每月报告的组织方式相同)。我一直在努力寻找文件的最通用路径。我提出了:
File f1 = new File("src/Statements/TemplateStatement.xml");
其中/Statements/
是Eclipse中src
选项卡下的文件夹,就像它只是另一个包一样。
然后:
File TemplateStatement = new File(f1.getAbsolutePath());
if (TemplateStatement.exists()) {
// ...do some stuff
} else {
JOptionPane.showMessageDialog(null, null,
"ERROR: Transaction template not found.", JOptionPane.OK_CANCEL_OPTION);
System.exit(0);
}
从Eclipse运行时,它运行良好,我的东西完成了。在我的桌面(同一台计算机和文件系统)上作为.jar
运行时,我每次都会点击else
子句。我怀疑我错过了一个非常基本但重要的特性,即jar如何打包工作区并运行它(因为没有与src
目录相关联的?)。
我没有找到关于如何从震撼的应用程序中找到路径,访问,读取,写入,复制等文件的示例或解释。我真的想避免硬编码完整路径,因为代码可能会在各种机器上运行。任何建议或指示将不胜感激。
答案 0 :(得分:0)
我刚刚遇到了类似的问题,它是由使用平台默认编码的java.io.FileReader函数引起的。
就我的情况而言,在运行Runnable .jar时,java.io.FileReader使用ISO-8859-1编码,而在Eclipse中它使用UTF-8编码。替换
new FileReader(filepath)
与
new InputStreamReader(new FileInputStream(filepath), "UTF-8")
解决了我的问题。