Platzverbrauch, File oder String

Hallo

Ich programmiere gerade ne art Datei-Suchmaschine für meinen PC sowie die im Netzwerk verbundenen Laufwerke (ich weiß, gibt schon viele, jedoch will ich dies für mich speziell anpssen)

Da kam mir die Frage, was weniger platz braucht:
das File-Object, das wird ja einen haufen Platz brauchen, wenn ich für jede gelesene Datei einen Eintrag brauche, oder einfach den kompletten Pfad in ein String-Object ? Daraus kann ich ja weiterarbeiten.
Beim String bräuchte ich dann noch die Größe und das letzte Speicherdatum (zumindest für den Anfang).

Wie viel Platz braucht ein File-Object ?? (vermutlich abhängig von Pfadlänge usw.)

Aufbauen würde ich dies als linkedlist, da ich beim suchen sowieso immer alle durchsuchen muss.

Habt ihr da rigendwelche Tipps oder erfahrungen für mich ?

Danke, S.
 

Timothy Truckle

Top Contributor
Da kam mir die Frage, was weniger platz braucht:
Mit solchen Fragen solltest Du Dich erst beschäftigen, wenn Du tatsächlich Probleme mit dem Speicher hast, und dann auch erst, wenn Du mittels Profiling festgestellt hast, dass [JAPI]File[/JAPI] tatsächlich die Ursache ist.

Es gibt keinen Grund [JAPI]File[/JAPI] durch ein eigenes Konstrukt auf basis einen kodierten String nachzubauen.

bye
TT
 
S

SlaterB

Gast
File ist auch überraschend leere Klasse, enthält nur intern einen String,

mit hunderttausenden Dateien kann man sicherlich den Standard-Arbeitsspeicher beanspruchen,
spätestens mit zugewiesenen GB aber dann doch eher schwer

wenn überhaupt gibt es Datenbanken zum effizienten Vorhalten großer Datenmengen mit Suche usw.
 
Besten dank.

hatte dies schon mal in VBA über SQL programmiert, und versuche da nun über java.
Datenbank oder verteiltes rechnen kommt vielleicht später noch dazu.
 
Hi

Ich habe noch eine Frage zum File-Objekt

Mir ist aufgefallen, daß ein paar Routinen ziemlich lange dauern, wie z.b. .isDirectory()
Wird da erst bei der Anfrage geprüft, ob dies ein Ordner ist oder schon bei der Instanzierung ???

Die Filegröße wird ja immer beim aufruf der instanz neu eingelesen, hmmm, dauert bei vielen Files am Netzwerk sehr lange :-(
 
Zuletzt bearbeitet:

faetzminator

Gesperrter Benutzer
Was heisst ziemlich viel Zeit?
Gut möglich, dass diese Daten lazy initialisiert werden. Warum schaust du nicht einfach den Quellcode an? Ich behaupte, dass in [c]public abstract int getBooleanAttributes(File f);[/c] das Lazy Init passiert.
 
S

SlaterB

Gast
im Netzwerk kann alles lange dauern, File über Betriebssystem, DB-Zugriff, sonstiger Programmaufruf,
das muss mit Java, Entscheidung String, File, DB usw. nicht unbedingt etwas zu tun haben

allerdings kann es sich schon anbieten statt auf vielleicht 100 Files einzeln langsam zuzugreifen
auf anderen Rechner jemand zu haben der sich um alles kümmert (dort normal schnell) und nur 1x auf Ergebnis-Nachricht zu warten
 
hmm, ja, die verteilte programmierung kommt noch, auch SQL hab ich derzeit keinen zugriff,, kommt vielleicht auch noch.

Ich versuche jetzt (zum ersten mal) eine Bestehende Klasse (File) zu erweitern, und weitere Daten zu speichern, da ich noch viel mehr auswertungen mache, und nun dauerts dann schon ne weile.

Es geht hier (für denAnfang) mal um ca. 250k Files auf dem netzlaufwerk.

Danke wiedermal !
 
hmm, ja, bedeutet für mich aber eine viiiel längere Laufzeit.

habe jetzt die Klasse File1 angelegt, abgeleitet von File, wo ich die eine oder andere Methode umschreibe, sodaß nicht jedesmal geprüft wird.

Ich konnte es überall, bis auf eine zeile umschreiben, hier bekommeich weiterhin den Fehler "Type mismatch: cannot convert from element type File to File1"

Hier ein Codeauszug:
Java:
		File1 dir = new File1(Laufwerk);

		for (File1 Dateielement : dir.listFiles()) { // <<-- Hier liegt der Fehler bie dir-listfiles()
				if (Dateielement.isFile()){
					filelist.add(Dateielement);
				}
				if (Dateielement.isDirectory()){
					Ordner_noch_einzulesen.add(Dateielement);
					filelist.add(Dateielement);
				}
			}

Ich habe dir als File1 angelegt, warum will er unbedingt bei .listFiles das File-objekt ??
 
S

SlaterB

Gast
wie sieht denn File1 aus, hast du listFiles() überschrieben und erzeugst File1-Objekte?
ansonsten macht File selber Arbeit und wird gewiss nicht File1-Objekte erzeugen,
es kommen File-Objekte heraus

nur eine Klasse zu schreiben ändert nicht automatisch auf magische Weise alles
 
wie sieht denn File1 aus, hast du listFiles() überschrieben und erzeugst File1-Objekte?
ansonsten macht File selber Arbeit und wird gewiss nicht File1-Objekte erzeugen,
es kommen File-Objekte heraus

nur eine Klasse zu schreiben ändert nicht automatisch auf magische Weise alles

Danke, hat mir geholfen, zumindest bei der einen Methode, dafür jetzt bei einer anderen:

Die Methode listFiles hab ich in der File1-Methode überschrieben auf das Objekt File1
Jetzt will ich die Roots auslesen, nur die ist statisch, bekomme eine Fehlermeldung erst während der Laufzeit, er kann die nicht Casten

Java:
	@Override
	public File1[] listFiles() {
		return (File1[]) super.listFiles();
	}
	
	public static File1[] listRoots(){
		return (File1[]) File.listRoots();
	}

wie komme ich hier an meine statische Methode ???:L

Hoffe beim listFile bin ich am richtigen weg, konnte es ja auch noch nicht testen.
 
S

SlaterB

Gast
Casten bewirkt dahingehend nichts,
wenn du File1-Objekte haben willst, dann muss auch irgendwo irgendwer File1-Objekte erstellen, also viele

einfach zu bedenken

du musst schon
Java:
    public File[] listFiles() {
	String[] ss = list();
	if (ss == null) return null;
	int n = ss.length;
	File[] fs = new File[n];
	for (int i = 0; i < n; i++) {
	    fs[i] = new File(ss[i], this);
	}
	return fs;
    }
komplett überschreiben, genau den gleichen Code ausführen und statt 'new File' eben 'new File1'-Objekte erzeugen,
das Array auch vom richtigen Typ erstellen,
+ Rückgabetyp ändern, was aber nicht ganz zwingend ist wenn etwa manschmal durch Interface vorgeben

falls File1 von File erbt und File1[] erzeugt wurde und richtig befüllt,
dann kann es tatsächlich im Programm nötig und sinnvoll sein, irgendwo File[] auch auf File1[] zu casten

----

oftmals hat man nicht die Möglichkeit oder es wäre unschön, den kompletten Code selber zu kopieren/ zu ändern,

grundsätzlich gibt es dann als alternatives Vorgehen, das File[] normal erstellen zu lassen, in der überschriebenen Methode z.B. mit super.listFiles(),
dann aber immer noch ein neues Array zu erzeugen und jedes einzelne normale File-Objekt durch ein eigenes zu wrappen/ ersetzen

das dürfte für die statische Methode nötig sein
 
so, hab jetzt einiges umgeschrieben und in die Klasse implementiert.
Funktioniert, nur mit der Geschwindigkeit bin ich noch nicht ganz zufrieden.

mal schauen, wann ich euch erneut um Hilfe anbettle

lg S.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B boolean array = byte array (platzverbrauch) Allgemeine Java-Themen 6
H "File too large" - genauere IOException-Behandlung Allgemeine Java-Themen 5
H Sicherer File Tresor Allgemeine Java-Themen 13
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
D Read JSON File Problem Allgemeine Java-Themen 9
S Umstellung von File auf Path - Probleme mit Stream Allgemeine Java-Themen 5
C jar File mehrfach aufrufen (als Windows Dienst) Allgemeine Java-Themen 5
N File Path mit Variablen angeben Allgemeine Java-Themen 1
izoards Zugriff auf gemeinsame Ressource (CSV-File) Allgemeine Java-Themen 3
S Class File Editor -> Source not found Allgemeine Java-Themen 4
F jar File ausführen Allgemeine Java-Themen 14
M File Binary Representation Allgemeine Java-Themen 1
N jar File auf Mac mit Doppelklick starten Allgemeine Java-Themen 5
O Input/Output java.io.File beenden Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
T Jar File zu exe... Allgemeine Java-Themen 3
M Foreign Memory API / Memory-Mapped File Allgemeine Java-Themen 0
R Delete files before creating new from temp using Java file method Allgemeine Java-Themen 1
S File lesen und schreiben Java 6 Allgemeine Java-Themen 2
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
F Input/Output FileNotFoundException, obwohl File existiert Allgemeine Java-Themen 5
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
L JAR-File auf Ilias (LMS) laufen lassen Allgemeine Java-Themen 0
ralfb1105 Classpath Directory fuer Properties File Allgemeine Java-Themen 2
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
J File in Package erstellen & lesen mit Programmstart in externe Projekt Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
A File lesen Codierung Charset Allgemeine Java-Themen 5
J .java-Dateitext Compile zur Laufzeit ohne File Allgemeine Java-Themen 15
M Key-File im selben Ordner speichern? Allgemeine Java-Themen 18
I TrueZip add file to archive Allgemeine Java-Themen 10
T Probleme mit dem Pfad zum Propertie file Allgemeine Java-Themen 7
J ftp - delete file ohne appache Allgemeine Java-Themen 8
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
T ImageIO.read -> Can`t read input file Allgemeine Java-Themen 11
L Applet Problem "security: Trusted libraries list file not found" ? Allgemeine Java-Themen 7
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
H Kennt sich jemand mit Eclipse und dem Thema Jar-File aus ? Allgemeine Java-Themen 6
H Laden einer (Resourcendatei) aus einem Jar-File Allgemeine Java-Themen 17
C Authentifizierung mit java.nio.file? Allgemeine Java-Themen 5
L CSV File lesen, in ArrayList speichern und ausgeben Allgemeine Java-Themen 3
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
offi Drag and Drop mehrerer File aus Explorer in JTable Allgemeine Java-Themen 1
G Java/LibGDX File Loading Exception Allgemeine Java-Themen 2
Cromewell JavaFX FXML-File lädt unter Ubuntu nicht Allgemeine Java-Themen 7
D Java Anwendung mit dll File Allgemeine Java-Themen 5
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
thet1983 Input/Output read properties file from classpath Allgemeine Java-Themen 3
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
J Properties file ändern Allgemeine Java-Themen 12
S Executable Jar File startet nicht unter Windows 10 Allgemeine Java-Themen 3
B Objekte anhand von Properties file Allgemeine Java-Themen 41
Dechasa Input/Output Write into File Allgemeine Java-Themen 2
N Maven ObjectMapper Error wenn das File gespeichert wird Allgemeine Java-Themen 0
H Security Manager (IIOException: Can't read input file!) Allgemeine Java-Themen 2
H File.listFiles() funktioniert nicht... Allgemeine Java-Themen 10
C Input/Output Problem bei Datei verschiebung mit File.move und Paths.get() Allgemeine Java-Themen 26
X Zeile unter einer bestimmen Zeile hinzufügen(File) Allgemeine Java-Themen 1
F Open source file übersetzen Phython -> Java Allgemeine Java-Themen 4
C file.delete() funktioniert bei zweiten aufruf nicht mehr Allgemeine Java-Themen 3
M Desktop jar File icon Ändern? Allgemeine Java-Themen 14
O Sax-Parser ließt XML-File doppelt Allgemeine Java-Themen 1
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
Thallius Custom File Chooser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
J Java Download Filedownload File.getFileName Allgemeine Java-Themen 3
R Java .class-File-Konstrunkt mit Programm visualisieren Allgemeine Java-Themen 18
G SecurityManager/Policy-File/Reflection Allgemeine Java-Themen 0
M pdf File bzw. ausgefüllte pdf Formulare drucken Allgemeine Java-Themen 2
S Input/Output File Not Found FileReader Allgemeine Java-Themen 6
Thallius Serialisiertes File kann auf anderem Rechner nicht geladen werden Allgemeine Java-Themen 12
P Java Dynamic Web Project -> config File Allgemeine Java-Themen 1
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
M File IO Klasse ... wie einbinden Allgemeine Java-Themen 6
O Freies Tool zum Jar-File obfuscaten gesucht! Allgemeine Java-Themen 5
F File.listFiles ohne .sort Allgemeine Java-Themen 6
B XML File JAXB Allgemeine Java-Themen 0
J Runnable jar-File: Fehlermeldung Allgemeine Java-Themen 2
P Kurze Frage: aus einer File die Zeilenanzahl auslesen Allgemeine Java-Themen 9
K Gepacktes Jar-File gibt beim Doppelklick eine Exception aus Allgemeine Java-Themen 4
P java.nio.file unter Java 6 verwenden Allgemeine Java-Themen 4
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
B Finde letztes veränderte File Allgemeine Java-Themen 4
E Zip-File entpacken: unterschiedlicher Zeitaufwand bei unterschiedlicher Puffergröße Allgemeine Java-Themen 2
Guybrush Threepwood File.canWrite() und UAC Allgemeine Java-Themen 7
N Input/Output Mit Windows 7 erzeugtes zip-File in Java 7 öffnen Allgemeine Java-Themen 5
B Garbage Collection Logfile: Binary File Allgemeine Java-Themen 2
H XML-File mit Java erzeugt Frage Allgemeine Java-Themen 10
V C-Header Datei aus .java File herstellen Allgemeine Java-Themen 10
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
T @NotBlank verwendet nicht message aus .property-File Allgemeine Java-Themen 4
G Jar-File soll eignen *.jar Namen ausgeben Allgemeine Java-Themen 10
S Jar-File startet nicht über doppelklick Allgemeine Java-Themen 2
P ganze Zeilen in einem File mit .replace() ändern. Allgemeine Java-Themen 10
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
P Aus einem File Zeilen auslesen. Allgemeine Java-Themen 15
V ProcessBuilder exe file Allgemeine Java-Themen 3
L Variablen IO Exception weil File angeblich nicht exisitert Allgemeine Java-Themen 10

Ähnliche Java Themen


Oben