从控制器读取文件

时间:2015-08-17 15:40:47

标签: java controller filereader

我有两种几乎相同的方法。但是1可以看到我的文件,另一个没有。它使用line = null跳过方法体。不明白为什么。 这不起作用

    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    public String handleFileUpload(@RequestParam("file") MultipartFile file, Model model) {

        if (!file.isEmpty()) {
            try {
                String path = "d:/" + file.getOriginalFilename();
                byte[] bytes = file.getBytes();
                BufferedOutputStream stream =
                        new BufferedOutputStream(new FileOutputStream(new File(path)));
                stream.write(bytes);
                model.addAttribute("list", addRecordsToBD(path));
                stream.close();
            } catch (Exception e) {
                log.error("Upload failed", e);
            }
        }
        return "show";
    }

    private List addRecordsToBD(String path) {
        String line;
        try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
            while ((line = reader.readLine()) != null) {
                String[] users = line.split(",");

                repository.saveAndFlush(new User(users[0], users[1], users[2], 
                        users[3], users[4]));

            }
        } catch (IOException e) {
            System.out.println("Input problems");
        }
        System.out.println("Inserting done");
        return repository.findAll();
    }

但这项工作很棒

    public void addRecordsToBD(String path) {
        String line;
        try (BufferedReader reader = new BufferedReader(new FileReader(path))) {
            while ((line = reader.readLine()) != null) {
                String[] users = line.split(",");
                System.out.println("User [Name = " + users[0] +
                        ", surname = " + users[1] +
                        " login = " + users[2] +
                        " mail = " + users[3] +
                        " phone = " + users[4] +
                        "]");

            }
        } catch (IOException e) {
            System.out.println("Input problems");
        }
        System.out.println("Inserting done");
    }

}

有人可以解释一下,问题是什么以及为什么会这样?

0 个答案:

没有答案