Java 使用post-Spring引导将新用户写入JSON文件

Java 使用post-Spring引导将新用户写入JSON文件,java,spring,spring-boot,Java,Spring,Spring Boot,我想用spring boot将新的用户对象附加到json文件中。 数据是通过一个post从一个角度表单发送到我的spring boot后端的,在每次新注册时,都需要向json文件添加一个用户 我正在尝试使用outputstream写入位于我的resources文件夹中的json文件,但它似乎不起作用,因为fileoutputstream找不到该文件 我的代码: @PostMapping(path = "/api/register", consumes = "appl

我想用spring boot将新的用户对象附加到json文件中。 数据是通过一个post从一个角度表单发送到我的spring boot后端的,在每次新注册时,都需要向json文件添加一个用户

我正在尝试使用outputstream写入位于我的resources文件夹中的json文件,但它似乎不起作用,因为fileoutputstream找不到该文件

我的代码:

@PostMapping(path = "/api/register", consumes = "application/json")
    public String addUser(@RequestBody User user) {
        User newUser = new User(user.getfirstName(), user.getLastName(), user.getEmail(), user.getPassword());

        FileOutputStream fileOutputStream = new FileOutputStream(Paths.get("src/main/resources/data/users.json"));
        OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8);
        BufferedWriter writer = new BufferedWriter(outputStreamWriter);

        // write the user to the file
        writer.write(newUser);
        writer.flush();

        return "user is added";
    }
  • 这是将新用户直接写入文件的正确方法吗(不能覆盖文件中已有的用户)?还是最好将它们添加到arraylist中,然后将数组列表写入该文件

首先,最好使用数据库,而不是写入文件

但如果要在资源中写入文件,请尝试以下操作:

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
FileOutputStream outputStream = new FileOutputStream(new File(classLoader.getResource("data/users.json").getFile()));

另外,如果首先在数组列表中添加用户,然后写入文件,这会导致数据存储在RAM中,如果服务器在某个点停机(在将数组列表写入文件之前),数据将丢失

为什么不使用数据库?这样更容易,也更漂亮。感谢这项工作,我最终将使用数据库。但现在我想将它存储在一个JSON文件中,直到我知道如何使用它并将其保存在MySQL数据库中。