Die Oracle-Dokumentation sagt here, dass die Files.readAllLines(Path path, Charset cs)
Methode die Zeilen aus einer Datei als List<String>
zurückgibt.
Was wird es zurückgeben, wenn die Datei nicht existiert? Auch welche Implementierung von List<String>
wird es zurückgeben?Was wird readAllLines zurückgeben, wenn die Datei nicht existiert?
Antwort
Was wird es zurück, wenn die Datei nicht existiert?
Es wird nichts zurückgeben. Wie die JavaDoc sagt es, die readAllLines
Methode wird eine IOException
im Falle von E/A-Fehler werfen.
Insbesondere, wenn die Datei nicht existiert, wirft die Implementierung von JDK 8, die ich verwende, eine java.nio.file.NoSuchFileException
, die eine Unterklasse von IOException
ist.
Auch welche Implementierung von
List<String>
wird es zurückgeben?
Das ist wirklich nicht deine Sorge. Deshalb gibt es Interfaces und Encapsulation, also schaut man nicht hinein. Die wichtige Sache ist, dass es ein Objekt ist, das den Vertrag der List
Schnittstelle respektiert.
Wenn Sie es wissen müssen, können Sie dies überprüfen, indem Sie das zurückgegebene Objekt .getClass()
aufrufen. Die Implementierung von JDK 8, die ich verwende, gibt java.util.ArrayList
zurück. Eine andere Implementierung könnte etwas anderes zurückgeben. Wie ich bereits erwähnt habe, sollten wir nicht einmal versuchen zu sehen, was es ist, um jedes Risiko zu vermeiden, die Kapsel zu brechen.
Hier sind die geworfenen Ausnahmen von Files#readAllLines(Path, Charset)
es tatsächlich eine Try-mit-Ressourcen verwendet ein BufferedReader
mit den path
als Parameter der Instanziierung. Wenn die Datei nicht existiert, wird innerhalb des Konstruktors ein IOException
geworfen.
Würfe:
java.io.IOException
wenn ein I/O-Fehler tritt aus der Datei zu lesen oder einem fehlerhaft oder nicht zuzuordnenden Bytefolge
java.lang.SecurityException
Im Falle des Standardanbieter gelesen wird, und ein Sicherheitsmanager installiert ist, wird die checkRead-Methode aufgerufen überprüfen Lesezugriff auf die Datei.
Ein ArrayList<String>
ist als die exakte Umsetzung der List<String>
public static List<String> readAllLines(Path path, Charset cs) throws IOException {
try (BufferedReader reader = newBufferedReader(path, cs)) {
List<String> result = new ArrayList<>(); <-------- HERE
for (;;) {
String line = reader.readLine();
if (line == null)
break;
result.add(line);
}
return result;
}
}
Onward Java7 verwendet: Es NoSuchFileException, wenn die Datei nicht existiert werfen.
können Sie mehr studieren: FileNotFoundException vs. NoSuchFileException
Eigentlich nein, nicht in jedem aktuellen jvm, es wird eine java.nio.file.NoSuchFileException –
werfen Sie könnten JDK7 oder JDK8 verwenden. – CrawlingKid
Nun Ihre Antwort zunächst einfach nur FileNotFoundException angegeben und ich antwortete mit nicht in jedem aktuellen jvm. Sogar 7 ist offiziell Ende des Lebens. –
Einfach genug zum Testen?
Exception in thread "main" java.nio.file.NoSuchFileException
Wie der tatsächliche Typ des Rückgabewerts. Die Rückkehrunterschrift sagt nur List und das ist alles, was Sie vertrauen können. Having said, dass die aktuellen Oracle-Klassenbibliotheken Arraylist zurück:
List<String> readAllLines = Files.readAllLines(path, Charset.defaultCharset());
System.out.println(readAllLines.getClass());
Gibt die Ausgabe:
class java.util.ArrayList
, die in der Quelle von zu sehen ist:
List<String> result = new ArrayList<>();
- 1. fwrite wenn Datei nicht existiert?
- 2. Datei ReadAlllines verwandelt Fremdsprache in Kauderwelsch ()
- 3. Was sollte die Suchmethode zurückgeben, wenn nichts gefunden wird?
- 4. Wie wird die Suche ('Datei') in Ansible verwendet, wenn die Datei nicht existiert?
- 5. Wenn eine Webseite nicht existiert, welche Header soll ich zurückgeben?
- 6. org.apache.commons existiert nicht, wenn Maven verwendet wird
- 7. symfony existiert return false, auch wenn die Datei existiert?
- 8. 'Payload-Datei existiert nicht' Was bedeutet das?
- 9. HttpHandler feuert nur, wenn die Datei nicht existiert
- 10. Makefile - Machen Sie Abhängigkeit nur, wenn die Datei nicht existiert
- 11. fs.watch gibt es einen Fehlerhandler, wenn die Datei nicht existiert?
- 12. fs.statSync löst einen Fehler aus, wenn die Datei nicht existiert
- 13. .htaccess - Weiterleitung in neuen Ordner, wenn die Datei nicht existiert
- 14. nicht null zurückgeben - was für die Suchfunktion
- 15. AppleScript: Wenn eine Datei nicht existiert
- 16. Wie nur enthalten, wenn die Datei existiert
- 17. Warum ist File.Exists() viel langsamer, wenn die Datei nicht existiert?
- 18. Fehler: Die Datei ... nicht existiert, wenn writeToFile auf
- 19. Nichts tun, wenn die Datei nicht existiert - Chef Template
- 20. Datei mit pdf öffnen, wenn Datei existiert
- 21. Keystore-Datei existiert nicht
- 22. Wie man eine Nachricht anzeigt, wenn die Datei bereits existiert
- 23. Java-Datei existiert nicht, aber File.getAbsoluteFile() existiert
- 24. Machen Ant-Löschen Aufgabe fehl, wenn ein Verzeichnis existiert und nicht gelöscht wird, aber nicht, wenn es überhaupt nicht existiert
- 25. Java Files.exists() gibt false zurück, auch wenn die Datei existiert
- 26. Wird ConfigurationManager.AppSettings ["blah"] eine Ausnahme auslösen, wenn "blah" nicht existiert?
- 27. Automatische Migrationen, wenn die Protokolltabelle nicht existiert
- 28. Nichts tun, wenn die Tabelle nicht existiert
- 29. Python-Datei existiert nicht Ausnahme
- 30. Ansible Include-Task nur, wenn Datei existiert
'IOException', wahrscheinlich, und der 'List' -Typ ist _deliberately_ unspezifiziert und kann geändert werden. (Ich würde allerdings auf einen 'unmodiableList'-Wrapper um eine 'ArrayList' setzen.) –
@LouisWasserman: Also kann ich nicht sicher sein, ob' List.get() 'O (n) oder O (1) ist für die zurückgegebene 'List'? – In78
@ ln78 Ich würde mir darüber keine Sorgen machen; Sie sollten sich ziemlich wohl fühlen, vorausgesetzt, es ist O (1), nur nicht, ob es veränderbar ist oder nicht. –