0

我正在尝试从 s3 存储桶下载 s3object,然后将该对象写入 html 文件。S3 对象正在下载,但是当我尝试创建一个文件并尝试写入该文件时,我遇到了 NullPointerException,我不确定我的代码有什么问题。请在下面查看我的代码,这方面的任何帮助或指导都会很有帮助。

 S3Object s3Object = s3Services.downloadFile("filename", "bucketName");
        if (s3Object == null) {
                throw new Exception("Object not found");
            }   
            File file = new File(request.getServletContext().getRealPath("/"+randomfilename+"."+"html")); // NullPointerException here
            FileWriter writer = new FileWriter(file);
            writer.write(s3Object.getObjectContent().toString());
            FileInputStream input = new FileInputStream(file);
            Files.copy(s3Object.getObjectContent(), file.toPath());
            input.close();
            ModelAndView v= new  ModelAndView(request.getServletContext().getRealPath("/"+randomfilename+"."+"html"));
            return v;

我的用例是我试图让用户自定义他的文本并将该自定义文件存储到 s3,当用户下次登录时我正在成功执行此操作,如果他生成了他的自定义文档我想填充他该页面以便为此,我必须从 s3 下载用户特定文件并将其写入某个 html 文件并向他显示该页面。

4

1 回答 1

0

似乎 request.getServletContext().getRealPath("/"+randomfilename+"."+"html") return null - 您可以通过换行来检查它:

File file = new File(request.getServletContext().getRealPath("/"+randomfilename+"."+"html")); // NullPointerException here
进入

String fileName = request.getServletContext().getRealPath("/"+randomfilename+"."+"html"); System.out.println("fileName = " + fileName); File file = new File(fileName);

除此之外,如果您使用 Files.copy 到路径中,则不需要使用 FileWriter ,这样您就可以删除这些行:

FileWriter writer = new FileWriter(file); writer.write(s3Object.getObjectContent().toString()); FileInputStream input = new FileInputStream(file); input.close();

于 2019-09-10T13:31:10.783 回答