Path eines Files

Status
Nicht offen für weitere Antworten.
M

muhkuh199999

Gast
hallo,

ich hab eine frage und zwar kann man sich bei einem file nur den pathnamen ohne den filenamen bekommen???


bisher spuckt er mir immer den kompletten pathnamen mit dem file namen aus. (zb: c:\test\blubb\blubb2\test.txt)
bruache das allerdings ohne den filenamen(zb: c:\test\blubb\blubb2\)

das ganze hat den sin das ich die ordner größe bestimmt bekomme.

weiss sonst nicht wie ich das machen soll.

meine idee war es ordner path mit dem file path zuvergleichen und wenn sie gleich sind soll er die file größe zusammen rechnen.

oder gibts eine bessere methode?


mfg und danke für eure hilfe

muhkuh
 

Lucifer002

Mitglied
hast du es schon mal so versucht?
Code:
java.io.File file = new java.io.File("D:\\test.txt");
System.out.println(file.getParent());
System.out.println(file.getName());
 

thE_29

Top Contributor
File.getAbsolutePath()

Sollte dir den ganzen zurückbringen!

und mit File.getCanonicalPath() kann man ggf, auf Links (unter Linux) abfragen!
 
M

muhkuh199999

Gast
getAbsolutPath();
bekomm ich ja wieder alles und den file namen.
beötige ja aber nur den path namen ohne den file namen. damit ich halt vergleiche kann ob das file auch in dem selber ordner liegt...

damit ich dir größe eines ordners bestimmen kann...

irgenwie klappt das immer nicht so richtig
 

Lucifer002

Mitglied
wie schon vorher geschrieben, mit getParent() bekommst du das Verzeichnis von einer Datei! und mit getName() den Dateinamen. Ich bin mir fast sicher, dass dies deine Problemstellung war. Ansonsten müsste ich dich bitten, die nochmals zu erläutern ;)
 
M

muhkuh199999

Gast
entschuldigung hat doch alles super geklappt.....hab es jetzt so wie ich es haben will. hab nur das getParent() die ganze zeit an der falschen stelle benutzt.

dickes danke für deine hilfe

mfg muhkuh
 
M

muhkuh199999

Gast
ach doch noch ne frage.
und zwar nu vergleiche ich den String vom ordner namen mit dem des file name.
also ob die die gleichen inhalten drinnen stehen haben, was sie ja eigentlich sollten wenn das file in dem ordner liegt.

nu sagt er mir aallerdings auch wenn die file und ornder string den gleich path haben das sie trotzdem falsh sind. woran liegt das?

eigentlich müsste das ja true sein....

danke für antworten
 
M

muhkuh199999

Gast
Code:
public void dicsize(int d)
	{
		
		
		
		for(int p=0; p <= fileinfo.size()-1; p++)
		{
			
			for(int z=0; z<= dicInfo.size()-1; z++)
			{
				
				System.out.println(fileinfo.get(p).getFileName().equalsIgnoreCase(dicInfo.get(z).getDicName()));
			if(fileinfo.get(p).getFileName().equals(dicInfo.get(z).getDicName()))
			{		
				System.out.println("VOLLTREFFER!!!!!!");
				dicInfo.get(z).setDicSize(fileinfo.get(p).getFileSize());
				
							
			}
			else
			{
				
				System.out.println("das war nichts!!!!\n");
				
			}
			}
		}
	}


dicinfo is meine arraylist in der die path für die ordner stehen.
fileino dort stehen die sachen für die einzelnen files drinnen. wie größe path usw...


mit fileinfo.get(p).getFileName().equals(dicInfo.get(z).getDicName() soll er halt die den filepath bis auf den name des filse mit dem ordnerpath vergleichen...
da funzt leider nicht gibt immer false an auch wenn beides sachen gleich sind.
nicht über die for schleifen wundern.

bin noch bei eine lösung zu finden wie man es hinbekommt das er immer wieder den arraylist für die ordner durch läuft und mit dem path des files vergleicht wenn. wenn es gleich ist soll das nächste filepath kommen und wieder solange mit dem ardner arraylist vergleichen is er wieder den richtigen path gefunden hat usw....

hoffe is verständlich was ich möchte bzw vorhabe.
mfg muhkuh
 

Lucifer002

Mitglied
ok... änder mal die Zeile
Code:
System.out.println(fileinfo.get(p).getFileName().equalsIgnoreCase(dicInfo.get(z).getDicName()));
in
Code:
System.out.println(fileinfo.get(p).getFileName()+" equals "+dicInfo.get(z).getDicName()+" = "+
fileinfo.get(p).getFileName().equalsIgnoreCase(dicInfo.get(z).getDicName()));
um und schau/poste den output.
Irgendwie werde ich das gefühl nicht los, dass du Dateipfade mit Verzeichnispfade vergleichen willst :p
 
M

muhkuh199999

Gast
hmmm mist hast recht bekomme

Code:
c:\test\test\brathaehnchen\brathaehnchen_bratwurst.txt equals c:\test\test\brathaehnchen = false

raus....

wie bekomme ich das denn hin das er das so macht wie ich das mir vorstelle? oder gibts ne bessere methode um eine ordner grösse raus zu bekommen???
 

Lucifer002

Mitglied
ich muss dir ehrlich sagen, ich tue mir da ein bisschen schwer ^^
da ich leider nicht weiß, was fileinfo.get(p) jetzt für ein Object zurückgibt. Wenn es ein java.io.File sein sollte, dann müsstest du doch nur fileinfo.get(p).getParent().getFileName().equalsIgnoreCase(dicInfo.get(z).getDicName()) machen.
Oder du postest mal ein bisschen mehr code. was in dicInfo und fileinfo gespeichert wird und eventuelle klassen die du dir gebaut hast ;)
 
M

muhkuh199999

Gast
getParent() kann ich in der klasse nicht benutzen weil er da sagt er kennt es nicht....

mit dem code geh ich durch das verzeichnis und guck ob es files oder ordner sind(die methode befindet sich in der gleich klasse wie die methode dicsize())


Code:
public void walkDirectory(String path) {
		File f = new File(path);
		if (!f.isDirectory())
			System.out.println(path + " is no Directory");
		// //////////////////////////////////
		String[] dirList = f.list();

		for (String y : dirList) {
			// System.out.println("DirList: "+y);
			File tmp = new File(path + "\\" + y);
			File timp = new File(path + "\\" + y);
			if (tmp.isFile()) {
					

					fileinfo.add(new FileProps((tmp.length() + 1023) / 1024,
							tmp.getAbsolutePath(), tmp.getParent()));
					
				
		
			}else {
				
						dicInfo.add(new DicProps(0, timp.getAbsolutePath()));
							walkDirectory(timp.getAbsolutePath());
					}
			}
		
	}

die werden dann in fileinfo bzw in dicinfo gespeichert.

die klasse fileinfo, dass vom typfileprops ist, sieht so aus:

Code:
package dateiensuche;

public class FileProps {

	private long filesize;
	private String filename;
	private String pathname;
	
	FileProps(long filesize, String filename, String pathname){
		
		this.filesize = filesize;
		this.filename = filename;
		this.pathname = pathname;
	}
	
	public String toString()
	{
		return "size: "+this.filesize+" - path: "+this.filename;
	}
	
	public long getFileSize(){
		return this.filesize;
	}
	
	public String getFileName(){
		return this.filename;
	}
	public String getPathName()
	{
		
		
		return this.pathname;
	}
}
dicinfo das vom typ dicprops ist sieht so aus:

Code:
package dateiensuche;

public class DicProps {

	private long dicsize;
	private String dicname;
	
	DicProps(long dicsize, String dicname){
		
		this.dicsize = dicsize;
		this.dicname = dicname;
	}
	
	public String toString()
	{
		return "size: "+this.dicsize+" - path: "+this.dicname;
	}
	
	public long getDicSize(){
		return this.dicsize;
	}
	
	public String getDicName(){
		return this.dicname;
	}
	
	public long setDicSize(long size){
		this.dicsize += size;
		return 1;
	}
}

dadruch kennt er in der dicsize methode nicht das getParent() aus der walkdirectory methode.

hoffe das hilft weiter. langsam hab ich keinen plan mehr wie ich das sonst machen kann
mfg
muhkuh
 
M

muhkuh199999

Gast
oh nä

das ich da nicht selber draufgekommen bin. rätsel hier stunden lang rum woran das liegt.

man ich könnte mir in ar... beißen.

dickes danke an dich das du mir geholfen hast :)

mfg muhkuh
 
M

muhkuh199999

Gast
huhu
bräuchte doch noch mal hilfe hab nu die größe der einzelnen ornder aber der oberordner muss ja jetzt noch die größe von den unterordner dazu bekommen. gibt es da irgendeinen befehl für oder hat jemand nen tip wie man das macht?

thx
mfg
muhkuh
 

Lucifer002

Mitglied
Hoi...

so kannst du ganz leicht die Größe eines Ordners mit allen Unterordnern rausfinden. Das Zauberwort ist glaub ich rekursion ;)
Code:
import java.io.File;

public class PathSizing {

	public static void main(String args[]) throws Exception
	{
		java.io.File file = new File("D:\\Downloads");
		System.out.println("Directory size: "+dirSize(file,false));
		System.out.println("Directory size rec: "+dirSize(file,true));
	}
	
	public static long dirSize(File dir, boolean rec)
	{
		if(dir == null) return 0;
		if(!dir.isDirectory()) return dir.length();
		
		long size = 0;
		
		File[] files = dir.listFiles();
		for(int i=0; i<files.length; i++){
			if(files[i].isFile()){
				size += files[i].length();
			}else if(rec){
				size += dirSize(files[i],rec);
			}
		}
		
		return size;
	}
}
 

eldios

Mitglied
bekomm ich denn so auch die größe von meinetwegen d:\\Downlodas\blah raus??? also wie groß blah ist?
 

Lucifer002

Mitglied
Da bei dir dirinfo anscheinend einen klassenvariable ist, kannst du auch ganz leicht, die größe von den einzelnen Unterverzeichnissen abfragen und speichern ;)
Aber ich glaub ein bisschen solltest du dich auch in die Sache reindenken ;)

Code:
else if(rec)
{
  long dirsize = dirSize(files[i],rec);
  dicInfo.add(new DicProps(0, file[i].getAbsolutePath()));
  size + = dirsize;
}
oder so ähnlich halt :p
 

eldios

Mitglied
hab noch mal ne verständnis frage und zwar zeigt er mir bei den ordnern nicht genau die größe an, die ich wenn ich rechtsklick eigentschaften mache habe.
woran liegt das?
 

Lucifer002

Mitglied
Wenn du rechtsklick-Eigenschaften gehst bekomme ich (WinXP) zwei größen angezeigt die tatsächliche Größe und die größe auf dem Datenträger(Speicherverbrauch) und in Klammer die Anzahl bytes. Warum die unterschiedlich ist, möchte ich jetzt hier nicht erläutern :p

Ich habe dabei die Anzahl bytes mit der tat. Größe kontrolliert und keine Unterschiede feststellen können. Was hast du für einen Unterschied?
 

eldios

Mitglied
zb :

size: 13200 - path: c:\test\test\wuerstchen\garagentor\cc
für den ordner die datei die sich in dem ordner befindet ist 862 groß.

also müsste der ordner doch auch 862 groß sein oder nicht?
ziegt er mir zumniidest unter winxp eigentschaften an
 

Lucifer002

Mitglied
Also... das jetzt herauszufinden dürfte schwer werden :/
Hast du Datenkompression auf dem Datenträger/Ordner aktiviert?
Sind in dem Ordner versteckte Dateien?
Hast schon mal versucht die Dateien per Hand zu zählen und Größe zu errechnen?
Sind in dem Ordner Dateien für die dein Benutzer keine Lesezugriffe hat?
 

eldios

Mitglied
also hab herausgefunden das er probleme mit rar dateien hat die über geht er einfach und bei txt dateien gibt er nicht 100% die richtige größe zurück wodurch es wohl zu rundungsfehlern kommt.

bzw die rar dateien erkennt er richtig addiert sie auch irchtig zur arraylist hinzu nur dann wenn er sie bei der ordnergröße rausrechnen muss macht er das nicht.

bsp: er soll den unterordner die größe nehmen und dann noch die rar datei die im oberordner noch ist muss dann ja noch dazu genommen werden.
das passiert nicht er gibt mir dann nur die größe von den unterordnern an. das einzige was er dann noch raufrechnet sind alle anderen ausser rar...
naja hoffe ich werde das noch lösen

mfg
eldios
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Falscher Link zum Path? Unterschiedliche Antworten bei Eclipse und VisualStudiocode Java Basics - Anfänger-Themen 5
V JDK / JRE / PATH Verwirrungen Java Basics - Anfänger-Themen 6
J Count und Copy in Stream<Path> Java Basics - Anfänger-Themen 11
F Git Projekt im Build Path Java Basics - Anfänger-Themen 3
J Erstellen einer Datei ohne path Java Basics - Anfänger-Themen 1
B MySQL Path bekommen Java Basics - Anfänger-Themen 40
B PATH kann nicht geändert werden Java Basics - Anfänger-Themen 2
G Erste Schritte Unter Mac "Path" anpassen .bash_profile? Java Basics - Anfänger-Themen 5
M Umgebungsvariable JDK/JRE? PATH setzen Java Basics - Anfänger-Themen 5
U Absolute path funktioniert nicht Java Basics - Anfänger-Themen 5
D javac kann trotz PATH-Eintrag nicht gefunden werden (Hello World) Java Basics - Anfänger-Themen 10
Q Path wird nicht richtig "übersetzt"? Java Basics - Anfänger-Themen 7
B Umgebungsvariable PATH gelöscht, Probleme bei Wiederherstellung Java Basics - Anfänger-Themen 1
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
J Compiler-Fehler bootstrap class path not set in conjunction with -source 1.6 Java Basics - Anfänger-Themen 2
H Best Practice java.io.File oder java.nio.Path Java Basics - Anfänger-Themen 5
S PATH und Pfad auslesen.... Java Basics - Anfänger-Themen 3
H Eclipse startet nicht (PATH Problem?) Java Basics - Anfänger-Themen 12
S Dateien mittels Path(s) kopieren und umbenennen. Java Basics - Anfänger-Themen 4
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
Z Umgebungsvariable PATH-Umgebungsvariable unter Windows 7 Java Basics - Anfänger-Themen 27
S Umgebungsvariable Exception in thread "main" java.lang.UnsatisfiedLinkError: no J3D in java.librar y.path Java Basics - Anfänger-Themen 15
S File Kopieren Path Pfad Problem Java Basics - Anfänger-Themen 3
Y .class Ausführung nicht möglich - Path lässt sich nicht ändern Java Basics - Anfänger-Themen 8
0 Path Java Basics - Anfänger-Themen 2
S java.io.file Appdata-PATH Java Basics - Anfänger-Themen 5
G was ist der Project class path Java Basics - Anfänger-Themen 7
G OOP Projektabhängigkeiten: A cycle was detected in the build path of project Java Basics - Anfänger-Themen 10
M Path Umgebungsvariable Java Basics - Anfänger-Themen 5
A Zeilenumbrüche im class-path der manifest.mf? Java Basics - Anfänger-Themen 5
D Java dll's und java.library.path Java Basics - Anfänger-Themen 2
J JAVA_HOME und path setzen bei windows 7 Java Basics - Anfänger-Themen 5
H windows 7 javac/path nicht gefunden Java Basics - Anfänger-Themen 3
M Java aufrufen, obwohl nicht in PATH-Variable eingetragen Java Basics - Anfänger-Themen 11
S HILFE Wie stelle ich die Path Varibalen wieder ein Java Basics - Anfänger-Themen 4
M path aus jar file Java Basics - Anfänger-Themen 14
Swiper Nach CronJob - Path nicht gefunden Java Basics - Anfänger-Themen 2
V Path? Java Basics - Anfänger-Themen 3
I Probleme beim Einrichten von Java (PATH-Veriable) Java Basics - Anfänger-Themen 4
T umgebungsvariable in xp setzen: hinter vorhandenen path? Java Basics - Anfänger-Themen 3
V Link Error java.library.path Java Basics - Anfänger-Themen 4
B Path Umgebungsvariable einstellen? Java Basics - Anfänger-Themen 5
H -Djava.library.path liefert in der Konsole "ClassNotFou Java Basics - Anfänger-Themen 4
D Probleme mit java.library.path unter linux Java Basics - Anfänger-Themen 4
T Einen Path von einer Main zu einer anderen Main übergeben Java Basics - Anfänger-Themen 34
L path einlesen und erkennen ob es für windows oder linux ist Java Basics - Anfänger-Themen 8
S Probleme mit path Java Basics - Anfänger-Themen 4
E Setzen des java.library.path Java Basics - Anfänger-Themen 7
G Path anlegen Java Basics - Anfänger-Themen 2
R Zu blöd für System.getProperty(path.separator) ? Java Basics - Anfänger-Themen 3
A Classpath oder Path? Java Basics - Anfänger-Themen 7
F Class-Path Eintrag in Manifest Java Basics - Anfänger-Themen 6
M Path zu javac nur für Administrator auf XP? Java Basics - Anfänger-Themen 2
G Hello World: Invalid Path Java Basics - Anfänger-Themen 6
T progr. kompilieren nicht möglich..autoexec.bat...Path..`wo? Java Basics - Anfänger-Themen 2
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
M Wie erreiche ich das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 2
M Wie erreiche ich es das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 0
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
A Java, verarbeitung eines xml-files Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
C Überprüfen eines Programms auf Syntaxfehler Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben