提问者:小点点

如何在Java中创建文件对象而不在硬盘/文件系统上物理创建文件?


我需要从应用程序调用以下外部API。我的应用程序生成一个文件

 @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file
                                           ){
}

创建文件后,从我的应用程序调用上述REST API。API是将文件上传到外部存储器。在我的例子中,我创建了一个文件,然后将它作为参数传递给API。在我的应用程序端,我不想创建文件。但是当API接受一个文件时,我的理解是我需要发送一个文件对象,这个文件对象不能在没有文件系统的情况下创建。

  public void createFile(){
   // logic here creates file in C:/sample.txt
   uploadFile();
  }

  public void uploadFile (){
        String filePath = "C:/sample.txt";
        FileSystemResource fileSystemResource = new FileSystemResource(new File(filePath));
        MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
        body.add("file", fileSystemResource);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);

        HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(body, headers);
          ResposeEntity<String> result=restTemplate.postForEntity("url", request,String.class)
}

共1个答案

匿名用户

从你题目中的问题:可以运行< code>new java.io.File(...)来接收文件的实例。这个文件不需要存在于文件系统中。这就是为什么你可以检查它是否存在()。

但是,我怀疑将其传递给API是否足够。API 很可能会尝试访问文件的内容,因此在运行时会抛出 FileNotFoundException。