我有一个 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/