close

一. 題目

Given the code fragment:

A. List<String> fc = Files.list(file);
fc.stream().forEach (s -> System.out.println(s));

B. Stream<String> fc = Files.readAllLines (file);
fc.forEach (s -> System.out.println(s));

C. List<String> fc = readAllLines(file);
fc.stream().forEach (s -> System.out.println(s));

D. Stream<String> fc = Files.lines (file);
fc.forEach (s -> System.out.println(s));

 

二. 題解

1. Paths.get()方法,把一個路徑字串轉換成 Path物件

image

取得含有course.txt字串的 Path物件,並參考到變數file。

2. 變數file傳入 Files.line()方法,這個方法把傳進來的 Path物件,找到對應的檔案(File),解析裡面的內容,並回傳一個泛型為 String的 Stream物件

image

參考到變數 fc

3. fc.forEach()把 Stream裡面的檔案內容印出來,正確答案為(D)。

 

(A)

Files.list回傳值為 Stream<Path>,與型態 Stream<String>不相符,錯誤。

image

(B)

Files.readAllLines()回傳值為 List<String>,與型態 Stream<String>不相符,錯誤。

image

(C)

readAllLines()前面沒有變數,錯誤。

(D) 正確答案。

 

※查 Files API時,意外發現有版本上的不同,列出差異

沒有Files.lines()方法 → https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html

有Files.lines()方法 → https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html

三. 參考

Paths API: https://docs.oracle.com/javase/7/docs/api/java/nio/file/Paths.html

Files API: https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html

arrow
arrow

    書童 發表在 痞客邦 留言(0) 人氣()