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.
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...
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
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.
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?
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
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
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
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?
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
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?
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
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?
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?
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