java - 如何读取每行都有一个数字的文件java

标签 java spring spring-boot

我有一个 spring Controller ,它使用 multipart/form-data 类型的请求。用户将上传一个文件,每行包含一个数字。每行将用新行分隔。例如:

12314
3434234
324545

我目前有以下但不确定它是否有效:

void readFile(@RequestBody MultipartFile file) throws IOException {

    List<String> listOfClientId = new ArrayList<>();
    String currentNumber = "";

    if(!file.isEmpty()){

        InputStream stream = file.getInputStream();

        int i = 0;
        while( (i=stream.read()) != -1 ) {

            if( (char) i != '\n'){
                currentNumber = currentNumber + (char) i;
            } else {
                listOfClientId.add(currentNumber);
                currentNumber = "";
            }
        }

    } else {
        System.out.println("Malformed filed.");
    }
    for(String s : listOfClientId){
        System.out.println(s);
    }
}

最佳答案

您可以像这样使用 BufferedReader :

List<String> collect;
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(stream))) {
    collect = buffer.lines()
                 .collect(Collectors.toList());
}

如果你想获取数字列表而不是字符串,那么你可以使用:

List<Double> collect;
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(stream))) {
    collect = buffer.lines()
            .map(Double::valueOf) // convert each line(String) to a Double or Integer, it depends on the size of your Numbers
            .collect(Collectors.toList());
}

关于java - 如何读取每行都有一个数字的文件java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55907692/

相关文章:

spring - 在grails应用程序中设置父应用程序上下文

java - Spring Boot应用程序错误页面

java - 使用 Jersey 实例化组件有什么好处

spring - 如何获取java配置类中定义的bean列表?

java - 在 Spring MVC/Security 中设置和读取 cookie

java - Android ListView显示位置错误

java - spring 应用程序不启动 : SAXParseException: Document root element "beans", 必须匹配 DOCTYPE root "null"

java - 看不懂这个Java GridLayout程序

java - Spring Data Neo4j存储库调用init方法失败

java - 在 IntelliJ 中启用 Spring 插件时,某些插件显示错误 'com.spring.intellij not installed'