3
我正在编写一些基本的文件I/O代码,并认为我可能会利用Java 8 Streams;特别是过滤。最终目标是读入文件并仅标记适用的行。以下是我当前的代码:将Java Tokenizer转换为Stream对象以便利用过滤
public void readInFile(String csvFile){
BufferedReader br = null;
String line = "";
final String csvSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
String[] transaction = line.split(csvSplitBy);
transactions.add(new QBTransaction(
new TransactionDetails(transaction[TRANSACTION_DATE],
transaction[TRANSACTION_NUM],
transaction[TRANSACTION_NAME],
Double.parseDouble(transaction[TRANSACTION_AMOUNT]))));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
transactionServiceImpl.addAll(transactions);
}
非常锅炉板。这里使用的代码流:
public void parseFile(String fileName) {
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
stream
.filter(w -> w.startsWith("Payment"))
//create object
} catch (IOException e) {
e.printStackTrace();
}
}
有没有把一个标记在foreach,或许输出一个String对象,我可以养活到另一个方法的方法吗?
是的,该地图类正是我想念,谢谢。 – StillLearningToCode