[英]How to read a file with a number on each line java
我有一個彈簧控制器,它消耗請求的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());
}
您可以使用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.lines()
和map()
或filter()
值一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.