【发布时间】:2014-10-28 03:32:33
【问题描述】:
旁边有一个可运行的 jar 文件和data.txt 文件。 data.txt 可能会动态变化。程序需要读取这个文件的内容。我第一次尝试打开文件不起作用:
new InputStreamReader(getClass().getResourceAsStream("/data.txt"), "UTF-8");
我想到了以下解决方案,但它很复杂,有点尴尬:
new InputStreamReader(new FileInputStream(new File(getClass().getProtectionDomain().getCodeSource().getLocation().getPath()).getParent() + "/data.txt"), "UTF-8");
很难理解这里发生了什么。
我试了new File("./data.txt"),NPE被抛出了。
如何打开data.txt 与.jar 文件位于同一文件夹中但可读性更强的文件?
【问题讨论】:
-
我认为解决方案在这里有详细描述-stackoverflow.com/questions/8775303/…
-
首先,不要写长链聚合物的陈述,尤其是当你不知道自己在做什么的时候。它们无法调试。
-
@HotLicks,其实我知道这个具体的语句是做什么的。但是对于另一个人,甚至是对我来说,一段时间后,它需要时间来理解。这就是为什么我需要更好的解决方案:)
-
所以,把它分成几个步骤,每个步骤分配给一个临时的。然后您可以轻松调试它。而且,可怕的是,考虑为每一步实际添加 cmets。