Oracle
1Z0-819 · Question #78
Given: List<Reader> dataFiles = new ArrayList<>(); dataFiles.add(new FileReader("MyIndex.idx")); File indexReaderFile = new FileReader(indexFile); try (BufferedReader indexReader = new…
The correct answer is B. On Line 1, enclose new BufferedReader(new FileReader) with try with resources. After Line 3, add dataReader.close(). See the full explanation below for the reasoning.
Question
Given:
List<Reader> dataFiles = new ArrayList<>();
dataFiles.add(new FileReader("MyIndex.idx"));
File indexReaderFile = new FileReader(indexFile);
try (BufferedReader indexReader = new BufferedReader(
new FileReader(new File(indexFile))){
for(int file = indexReader.read(); file != null;
file = indexReader.readLine()){
BufferedReader dataReader = new BufferedReader (
new FileReader(new File(file))); // Line 1
dataFiles.add(dataReader); // Line 2
processData(dataReader); // Line 3
}
} catch (IOException ex) {
}
finally {
for(Reader r : dataFiles) {
try {
r.close();
} catch (IOException ex) {
}
} // Line 4
}
What will secure this code from a potential Denial of Service condition?
Options
- AAfter Line 4, add indexReader.close().
- BOn Line 1, enclose new BufferedReader(new FileReader) with try with resources. After Line 3, add dataReader.close().
- COn Line 1, use try with resources when opening each dataReader. Before Line 1, check the size of dataFiles to make sure it does not exceed a threshold.
How the community answered
(65 responses)- A9% (6)
- B75% (49)
- C15% (10)
Community Discussion
No community discussion yet for this question.