有没有办法读取包内的文本文件。假设我想访问一个名为“myTextFile.txt”的文件,该文件位于一个名为“a”的包中。
我想从同一个包中的一个名为“MyClass”的类中访问它。“myTextFile.txt”的路径是什么?我可以像这样使用bufferedreader吗:BufferedReader in = new BufferedReader(new FileReader(PATH));
有没有办法读取包内的文本文件。假设我想访问一个名为“myTextFile.txt”的文件,该文件位于一个名为“a”的包中。
我想从同一个包中的一个名为“MyClass”的类中访问它。“myTextFile.txt”的路径是什么?我可以像这样使用bufferedreader吗:BufferedReader in = new BufferedReader(new FileReader(PATH));
您始终可以通过ClassLoader.getResourceAsStream()(或 getResource())获取资源。它们也可以通过Class.getResourceAsStream()(而不是 ClassLoader)访问。您可以使用相对名称或绝对名称(以 / 开头)。
听起来您需要使用其中一种Class.getResource()
或ClassLoader.getResource()
方法:
URL url = MyClass.class.getResource("myTextFile.txt");
URL url = MyClass.class.getClassLoader().getResource("myTextFile.txt");
或者
InputStream in = MyClass.class.getResourceAsStream("myTextFile.txt");
InputStream in = MyClass.class.getClassLoader().getResourceAsStream("myTextFile.txt");
请参阅此问题进行比较,以及绝对路径与相对路径的解释。
然后你可以做
new BufferedReader(new InputStreamReader(in));
InputStream is = new BufferedInputStream(getClass().getClassLoader().getResourceAsStream("/a/myTextFile.txt"));
应该做的伎俩。请注意 arg 的结构,包的根由“/”表示,您的包(即目录)也是如此
你的项目编译到哪里?任何路径都将相对于程序的位置,或者如果您指定,则为完整路径,而不是类。一旦你得到那条路,你就可以把它放在哪里PATH
。
但是,您有什么理由将该文件放入一个包中?它不应该放在某种资源目录中吗?
Class 上的 GetResource 效果很好。Spring 中的 ResourceLocator 也是一个非常灵活的选项。
只需输入绝对文件路径。即你的煤机路径。应该管用。