Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
gibt es in Java eine Moeglichkeit, eine Textdatei als Ganzes (also den kompletten Inhalt) zu lesen anstatt jede Zeile nacheinander?
Ich habe eine Datei mit folgendem Inhalt:
text ##var1## text
text ##var2## text
text ##varX## text
Ziel ist es, mit Java diese Datei einzulesen und die Platzhalter (##var##) durch definierte Werte zu ersetzen.
Zeile nach Zeile wuerde zwar funktionieren, erscheint mir aber nicht sehr performant da ja jede Zeile auf alle moeglichen Variablen geprueft werden muessten ... gibt's eine bessere Alternative?
Also ich will nicht jede Zeile einlesen, auf alle (!) Variablen durchsuchen und wieder in eine Datei schreiben. Bei 10 Zeilen und 5 Variablen waere das ja 10x5 Suchen&Ersetzen = 50
Wenn ich aber die gesamte Datei einlese und dann auf die 5 Variablen durchsuche ergibt das 1x5 Suchen&Ersetzen = 5
Also den Faktor Anzahl Zeilen weniger. Dagegen spricht natuerlich dass jedes Durchsuchen auf mehr Text (alle Zeilen anstatt eine) stattfindet, was das ausmacht kann ich nicht beurteilen ...
Du könntest einfach mal eine Zeitmessunge bei beiden Implementierungen durchführen. Ich könnte mir durchaus vorstellen, dass die zeilenweise Variante besser ist, aber das bezieht sich auch auf mein Verständnis des Problems, welches aufgrund der doch relativ vagen Problemstellung durchaus von der Realität abweichen könnte.
und wenn Deine Datei 2GB groß ist.
Dann pumpst Du Dir die <IRONIE>äußerst performante</IRONIE> Auslagerungsdatei voll, suchst implizit wieder "zeilenweise", weil evt. die Implementierung des Lesens der Auslagerungsdatei genau das macht und hast später überhaupt rein gar nichts gewonnen.
Es kommt nicht auf die bloße Anzahl von Anweisungen an. Überhaupt nicht!
Du kannst Performance nicht daran messen.
Einen zigtausend Bytes großen String zu durchsuchen ist mit Sicherheit langsamer als einen kurzen String zu durchsuchen. Was richtig ist, ist das jedes Mal wieder und wieder Festplattenzugriff auftritt und das ist ebenfalls langsam. Wenn es wirklich nur eine kleine Datei ist, dann kannst Du auch mit einer RandomAccessFile wahlfreien Zugriff bekommen und von Platzhalter zu Platzhalter springen, wie hier schonmal beschrieben.