通过Resource读取和写入Java文件
我正在尝试读取和写入文件,但我想通过资源访问该文件。
这就是我的工作
File f = new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI()); BufferedReader br = new BufferedReader(new FileReader(f)); String line = br.readLine(); PrintWriter p = new PrintWriter(new File(ClassLoader.getSystemResource("/blah/blah/Properties.prop").toURI()));
但似乎都不正确。 这样做的正确方法是什么?
试试以下:
InputStreamReader isReader= new InputStreamReader( this.getClass().getResourceAsStream(templateName)); BufferedReader br = new BufferedReader(isReader);
要么
InputStreamReader isReader= new InputStreamReader( .class.getResourceAsStream(templateName)); BufferedReader br = new BufferedReader(isReader);
输出,请尝试以下:
PrintWriter writer = new PrintWriter( new File(this.getClass().getResource(templateName).getPath());
上面的所有解决方案都显示了如何在build文件夹中访问您的资源。 这意味着已将资源移动到使用.class文件构建目录。
如果您需要将一些文件写入资源以便在终止程序后保存它们,那么您将必须描述从根项目开始的路径:
./src/main/resources/foo.ext
通常不推荐这种解决方案,但在其他情况下可能是必要的。
更简单地说,
try (BufferedReader bufferedReader = Files.newBufferedReader(Paths.get(Resources.getResource("path").toURI()))) { //bufferedReader... } try (BufferedWriter bufferedWriter = Files.newBufferedWriter(Paths.get(Resources.getResource("path").toURI()))) { //bufferedWriter... }
请注意,该路径相对于资源文件夹。