【问题标题】:file input to spring boot application文件输入到 Spring Boot 应用程序
【发布时间】:2019-01-10 10:42:49
【问题描述】:

我有一个包含以换行符分隔的电话号码的文本文件,我想将此文件传递给 spring boot 应用程序,并将文件内容复制到列表中。

@RequestMapping(value = "/FileUpload", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<String> FileUpload(@RequestParam("file") MultipartFile file,
                                        HttpServletRequest request, 
                                        HttpServletResponse response) {

  ....
}

谢谢:)

【问题讨论】:

  • 问题或问题是什么?
  • 这是我做的正确方式吗? ArrayList 结果 = 新 ArrayList(); Scanner s = new Scanner(new FileReader(file)); while (s.hasNext()) { result.add(s.nextLine()); } }

标签: java spring spring-boot


【解决方案1】:

这是一个读取文本文件并将其内容作为字符串逗号分隔数字返回的完整示例:

@RequestMapping(value = "/FileUpload", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseEntity<String> FileUpload(@RequestParam("file") MultipartFile file,  HttpServletRequest request, HttpServletResponse response) throws IOException  {
     List<String> numbers = new ArrayList<String>();
     InputStream inputStream = file.getInputStream(); 
     BufferedReader bufferReader =   new BufferedReader(new InputStreamReader(inputStream));
     String numberLine;
     while ((numberLine = bufferReader.readLine()) != null) {
        numbers.add(numberLine);
     }
     bufferReader.close();
     /* pint all numbers */
     numbers.forEach(System.out::println):
     String result = String.join(",", numbers);
     return new ResponseEntity<String>(result, HttpStatus.OK);
}

【讨论】:

    【解决方案2】:

    您应该编写一个函数来使用 BufferedReader 从 MultipartFile 创建一个列表,以逐行获取每个数字。以下是您可以使用 BufferedReader 执行的操作:

    String line;
    List<String> numberList = new ArrayList<>()
    val bufferedReader = BufferedReader(new FileReader(myFile));
    do {
        line = bufferedReader.readLine();
        if(line != null) {
            numbersList.add(line);
        }
    } while (line != null)
    bufferedReader.close()
    

    也许您必须编写一些额外的代码来满足您的需求,但它应该可以完成这项工作。试试这个并告诉我它是否有效,我没有使用 MultipartFile 进行测试。

    【讨论】:

      猜你喜欢
      • 2018-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 2018-09-07
      • 2021-01-05
      • 2021-11-17
      相关资源
      最近更新 更多