Wie lange dauert bei euch das Dateilesen?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!
Wie lange dauert bei euch das Lesen von Dateien(Bei einer Größe von 1 MB) mit Java?
Damit meine ich die Datei zu lesen und Buchtsabe für Buchstabe in einen String zu speichern.
Ich wundere mich, wieso es bei mir selbst bei 500KB nich langsam dauert.(Hardwaretechnisch bin ich gut ausgestattet). Sollte es bei euch auch langsam gehen(viele Minuten), bitte sagt es mir, dann muss es an meinem Programm liegen....
 
G

Guest

Gast
Einverstanden, ich werde jetzt mal die Zeit stoppen(nur bei einfachem Dateienlesen, kein Swing und so).
Ich hätte sonst eine ProgressBar laufen, aber verlangsamt sie die Zeit so extrem?
 

DP

Top Contributor
kommt auf die programmierung an. ein system.out braucht auch ohne ende zeit... mess mal und sag bescheid.

ferner ist auch nicht klar was du mit den eingelesenen daten machst. nur ausgeben oder weiter durch x schichten schieben bis der dreck dann in der datenbank landet...
 
G

Guest

Gast
Gut, dann weiß ich Bescheid. ^^
(jetzt sind es 10 min, ich denke ich kann abbrechen)

Die Datei ist etwa 500 KB groß.

Hier der Quellcode:
Code:
		RandomAccessFile f = null; 
		File file = new File("slow.bmp");
		String data="";
		int counter=0;
		try { 
		  f = new RandomAccessFile(new File("slow.bmp"), "r"); 
		  do {
		  data+=(char)f.read();
		  counter++;
		  } while(counter<file.length());
		} 
		catch (Exception e) { 
		  e.printStackTrace(); 
		} 
		finally { 
		  if (f != null) try { f.close(); } catch (Exception e) { e.printStackTrace(); } 
		}
		System.out.println("Fertig!");
 

Skipy

Mitglied
Ich hab festgestellt, das auf meinem Macintosh mit mit 1 Ghz ich ca 1000 Textdateien in 10 Sekunden erstellen kann.

Auf meinem Windows mit 1 Ghz brauche ich dafür jedoch ca 30 Sek.
Wobei bei anderen befehlen, der windows wieder schneller ist?
Hängt vielleicht mit den unterschiedlichen Prozessoren zusammen??
ka :?:
 
G

Guest

Gast
Gut, das werde ich austesten. In meinem letzten Programm hat die Schleife nicht angehalten, weil ich das mit dem -1 ausprobiert habe, da habe ich es dann mit einem counter probiert. Vielleicht habe ich etwas anderes falsch gemacht, ich werd es auf jeden Fall mal testen. Vielen Dank für die Hilfe, ich melde mich wieder, wenn es schwere Probleme gibt.
 
B

Beni

Gast
Mit einem BufferedInputStream oder BufferedReader könntest du vielleicht nochmehr Geschwindigkeit rauspressen.
 

Sky

Top Contributor
Na dann mal zur Erlärung:

Wenn Du mehrere Strings miteinander mittels '+' aneinander hängen willst, so werden "intern" immer neue Objekte erzeugt:

So wird aus
Code:
x = "a" + 4 + "c"
folgendes:
Code:
x = new StringBuffer().append("a").append(4).append("c").toString()
. (vgl. auch API) Das heißt mit jedem '+' (bei 1MB sind das ne ganze Menge) wird ein neuer Stringbuffer erzeugt.
Wenn Du selbst einen Stringbuffer erzeugst und die append-Methode aufrufst, so entfallen unzählige Objekt-Erzeugungen.
 
G

Guest

Gast
Achso, jetzt verstehe ich den Hintergrund!
Ich danke euch vielmals für die Erklärungen!
Und danke auch an Beni, den BufferedInputStream werde ich auch noch ausprobieren!
Ich versuche das Programm damit so schnell wie möglich zu machen.
Gibt es weitere Möglichkeiten, diese Geschwindigkeit zu maximieren?(also besondere Klasse und Tricks?)
 
G

Guest

Gast
Warum überhaupt BMP als String? :roll:

Code:
BufferedInputStream in = null;
ByteArrayOutputStream out = null;
try {
  File f = new File("whatever.bmp");
  in     = new BufferedInputStream(new FileInputStream(f));
  out    = new ByteArrayOutputStream((int)f.length());
  byte buffer[] = new byte[2048];
  int bytesRead;
  while((bytesRead = in.read(buffer)) != -1)
    out.write(buffer, 0, bytesRead);

  ...
}
catch (Exception e) {
  e.printStackTrace();
}
finally {
  if (in != null) try { in.close(); } catch (Exception e) { e.printStackTrace(); }
}
 
G

Guest

Gast
Naja, ich schreibe ein Steganographieprogramm. Ich muss jede Art von Dateien zerlegen, chiffrieren, vllt. komprimieren, etc.. BMP war nur ein Beispiel, da ich gerade keine größere Datei hatte, als ein leeres, weißes Bitmap.
Allerdings muss ich als Trägerdatei die Bitmapdatei öffnen. Wie funktioniert diese ImageIO#read methode? Genauso wie die anderen, oder weist sie besondere Merkmale auf?
 

Bleiglanz

Gesperrter Benutzer
wenns Text ist nimm einen BufferedReader und mach in einem Stringbuffer append(br.readLine())

noch schneller vielleicht mit der java.nio.*
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Anzeige, wie lange es noch dauert bis ein File gesendet ist. Java Basics - Anfänger-Themen 2
T Android App: Laden dauert lange Java Basics - Anfänger-Themen 1
C Wie lange dauert ein Projekt in Java? Java Basics - Anfänger-Themen 10
G Socket erstellen dauert sehr lange. Java Basics - Anfänger-Themen 4
T Ich brauche eine Schleife die eine beliebige Zahl so lange durch 10 teilt bis zur Null Java Basics - Anfänger-Themen 5
berserkerdq2 Lange Variablennamen schlechter Programmierstyle? Java Basics - Anfänger-Themen 4
Devin Wie lange braucht man um Java zu beherrschen und wie kann man es am schnellsten erlernen? Java Basics - Anfänger-Themen 7
CptK Methoden While-Schleife so lange ausführen, wie Methode etwas zurückgibt Java Basics - Anfänger-Themen 2
K Wie lange kann / soll das dauern? Java Basics - Anfänger-Themen 6
I HTML Tabelle nur so lange erzeugen bis Höhe erreicht Java Basics - Anfänger-Themen 9
B sehr lange Srings in File schreiben Java Basics - Anfänger-Themen 4
O Löschen lange pfade...Fehler? Java Basics - Anfänger-Themen 1
M Lange Methodenaufrufe == suboptimales Klassendesign? Java Basics - Anfänger-Themen 5
A scan.nextLine() - Wenn man zu lange nichts macht, soll etwas passieren Java Basics - Anfänger-Themen 3
R Zeit kommt mir zu lange vor... Java Basics - Anfänger-Themen 7
hedges Prog braucht lange, schlecht programmiert? Java Basics - Anfänger-Themen 3
H Eingabe so lange wiederholen bis gültiger Wert eingegeben. Java Basics - Anfänger-Themen 7
F Lange Rechenzeit. Java Basics - Anfänger-Themen 10
G Seeehr lange Variablen? Java Basics - Anfänger-Themen 5
M Thread.sleep(20) dauert 31ms ? Java Basics - Anfänger-Themen 7
I Review von euch erwünscht, double Rechnung falsch Java Basics - Anfänger-Themen 34
K GUI Entwicklung - Welche Richtung passt für euch zum mobilen Zeitalter? Java Basics - Anfänger-Themen 4
B frage an euch Java Basics - Anfänger-Themen 12
G Opjektorientierte Programmierung (OOP). einfach für euch Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben