最终修改:现在代码看起来像这样
InputStream is = getClass().getResourceAsStream("/static/master-key.txt");
String masterKey = null;
Scanner scanner = new Scanner(is);
masterKey = scanner.nextLine();
System.out.println("the master key is " + masterKey);
原帖
从resources
文件夹中读取txt文件时出现问题。
这个项目结构如下:
projStructure
当我调用以下代码时
System.out.println(getClass().getClassLoader().getResource("static/master-key.txt").getPath());
File mkFile = new File(getClass().getClassLoader().getResource("static/master-key.txt").getPath());
这会发生什么
/D:/Dropbox/Coding/Intellij%20IDEA/TishenkoKPO/target/classes/static/master-key.txt
java.io.FileNotFoundException:
D:\Dropbox\Coding\Intellij%20IDEA\TishenkoKPO\target\classes\static\master-key.txt (System cannot find the specified path)
我用谷歌搜索了很多,但不知道为什么会发生这种情况
修改1 : 部分代码重建为社区建议(使用文件作为资源)
InputStream is = getClass().getResourceAsStream("static/master-key.txt");
String masterKey = null;
Scanner scanner = new Scanner(is);
masterKey = scanner.nextLine();
System.out.println("the master key is " + masterKey); //successfuly outputs the first line if exists
编辑2:资源路径应以/
InputStream is = getClass().getResourceAsStream("/static/master-key.txt");
答案 0 :(得分:1)
InputStream is = getClass().getResourceAsStream("static/master-key.txt");
这是在搜索相对于调用它的类的包/目录的资源。实际上,相对于应用程序结构的根目录,实际上可以找到资源。为此,请添加前导/
,如下所示。
InputStream is = getClass().getResourceAsStream("/static/master-key.txt");
答案 1 :(得分:0)
试试这个
getResource("resources\static\master-key.txt").getPath());
如果您定位路径,请使用' \'不是' /'。 你可以尝试
YourClass.class.getResourceAsStream("resources\static\master-key.txt");
或
YourClass.class.getResourceAsStream("static\master-key.txt");