通过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... } 

请注意,该路径相对于资源文件夹。