Java 如何读取每行都有数字的文件

Java 如何读取每行都有数字的文件,java,spring,spring-boot,Java,Spring,Spring Boot,我有一个spring控制器,它使用请求的多部分/表单数据类型。用户将上传一个文件,每行包含一个数字。每行将用新行分隔。。e、 g: 12314 3434234 324545 我目前有以下信息,但不确定是否有效: void readFile(@RequestBody MultipartFile file) throws IOException { List<String> listOfClientId = new ArrayList<>(); Strin

我有一个spring控制器,它使用请求的多部分/表单数据类型。用户将上传一个文件,每行包含一个数字。每行将用新行分隔。。e、 g:

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());
}
您可以像这样使用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());
}
您可以使用BufferedReader读取文件的所有行:

List<String> listOfClientId = new ArrayList<>();
if (!file.isEmpty()) {
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) {
        String number;
        while ((number = reader.readLine()) != null) {
            listOfClientId.add(number);
        }
    }
} else {
    System.out.println("Malformed filed.");
}
如果您使用的是Java 8或更高版本,则可以将Java Streams与reader.line一起使用,并映射或过滤值

您可以使用BufferedReader读取文件的所有行:

List<String> listOfClientId = new ArrayList<>();
if (!file.isEmpty()) {
    try (BufferedReader reader = new BufferedReader(new InputStreamReader(file.getInputStream()))) {
        String number;
        while ((number = reader.readLine()) != null) {
            listOfClientId.add(number);
        }
    }
} else {
    System.out.println("Malformed filed.");
}
如果您使用的是Java 8或更高版本,则可以将Java Streams与reader.line一起使用,并映射或过滤值