2009-08-18 1 views
2

In den Kommentaren zu my answer about reading an entire file into memory using scala.io.Source behauptete ich, dass der Grund dafür, dass es in Java keine Read-Whole-File-in-String-Methode gibt, ist, dass es (natürlich) nicht skalierbar ist, wie groß die Datei ist und wie viel Heap du hast.Warum gibt es im JDK keine einfachen IO-Utilities zum Lesen einer ganzen Datei in einen String?

Aber ich denke, jeder eine Methode hat, wie:

String contents = IOUtil.readFile(f, "utf-8"); 

und die Durchführung des Verfahrens ist nur ein paar Zeilen Code. Warum haben sie das nicht erst dem JDK hinzugefügt? Ist das mein (Skalierbarkeits-) Grund, oder gibt es einen anderen Grund, warum er weggelassen wurde?

+4

"Warum haben sie das nicht erst dem JDK hinzugefügt?" Hoffen Sie, dass einer der JDK-Autoren diese Frage beantworten wird? Oder entlüfst du etwas, das du nicht magst? –

+4

Es gibt kein Ende von "Warum ist nicht X in der JRE" -Fragen, von denen keine zu verantworten sind. – skaffman

+1

Aber wenn es aus Gründen, die nicht offensichtlich sind, schädlich gewesen wäre, wäre es interessant (und lehrreich) zu wissen, warum. – finnw

Antwort

3

Weil Dateien eine beliebige Größe haben können, und es ist einfach eine schlechte Programmierpraxis, solche Dinge ohne viele Checks und Balances zu tun, um sicherzustellen, dass Sie VMs nicht links und rechts abstürzen.

+5

System.exit() stürzt VMs nach links und rechts ab, aber das ist in der JRE. Richtige Dokumentation ist der Schlüssel. – skaffman

+2

Außerdem gibt es Methoden wie diese in vielen anderen Sprachen wie Python und C#. –

+0

Ich denke, ich bin glücklicher mit den JDK-Programmierern, die (vermutlich) den Prozess durchdenken statt "Hier, ruf das an und wirf deinen gesamten Speicher ab!" – MattC

2

Ich denke, Ihre eigene Antwort ist richtig. Was ist, wenn Ihre Datei 1 GB lang ist?

Verwandte Themen