# Datei lässt sich nicht löschen



## Massta (13. Dez 2011)

Hallo,

ich hab echt ein mieses Problem. Ich habe letztens ein vereinfachtes Dateilese und schreibetool für meine Schulklasse geschrieben (java.io). Da kann man dann einen String als Dateinamen angeben und einen Pfad und dann wird ne Datei erstellt aber das ist unwichtig. Wichtig ist: Ich hab als String für den Dateinamen angegeben "Darya Vitske ". Das Programm wirft ne Exception, keine Ahnung welche aber die Datei wurde trotzdem erstellt: "Darya Vitske ". 
Wie zur verdammten Hölle kriege ich diese Datei weg?! Weder mein Programm, noch die Windows Console oder der Unlocker sind stark genug um die Datei zu löschen  Ich bin kurz vorm formatieren.. Da hab ich ja mal überhaupt keine Lust drauf 

P.s.: "Das System kann die Datei nicht finden" ist die Meldung auf alles, was ich bis jetzt unternommen hab. Ich nehm mal an das liegt an dem Doppelpunkt oder der Klammer im Namen.. Aber was soll ich tun?


----------



## irgendjemand (14. Dez 2011)

um dich mal schlau zu machen ... folgende "zeichen" sind in einem windows-dateinamen VERBOTEN

\ - Backslash
/ - Slash
: - Doppelpunkt
* - Sternchen
? - Fragezeichen
" - Quote *doppelte Anführungszeichen*
< - open Diamond
> - close Diamod
| - Pipe bzw. bit-wise OR

heißt also : die datei wurde entweder überhaupt nicht angelegt ... oder sie hat einen völlig anderen namen ...

die schließende runde Klammer ')' ist jedoch erlaubt ...

geh einfach mal in den windows-explorer und versuche die datei zu löschen ...
alternativ auch mal via console ... vorher mit [c]dir[/c] den exakten datei-namen holen und dann mit [c]del <FILENAME>[/c] versuchen zu löschen

zu beachten : es darf keine offenen streams auf das file geben ... und natürlich kein LOCK ...
also : alle programm die irgendwie auf diese datei zugreifen (wollen) vorher beenden ...

und wenn das immer noch nicht geht : google mal nach "TotalCommander" ... das ziehst du ... startest deinen rechner im "safe Mode" .. oder auch "abgesicherter Modus" ... startest TotalCMD und löschst dann das file ...

plattmachen würde ich erst im aller letzten notfall *alternativ vorher noch n PE oder Knoppix testen*


----------



## Spacerat (14. Dez 2011)

Hübsches Proggi hast da geschrieben, ich kauf' keins... 
Sofern die besagte Datei die einzige ist, die mit "darya" beginnt, könnte ein simples [c]del darya*.*[/c] oder alternativ [c]del darya*[/c] in der Konsole ausreichen.


----------



## xehpuk (14. Dez 2011)

Hach ja, das Problem hatte ich auch vor etwa zwei Jahren. Über eine Java-Anwendung einen Dateinamen mit einem Doppelpunkt drin erstellt. Weder die Datei, noch übergeordnete Ordner ließen sich durch den genannten Fehler löschen. Ich weiß aber nicht mehr, ob ich es damals über cmd probiert habe.
Nach einem Neuaufsetzen des Systems (Umstieg Vista -> 7) war die Datei dann aber auch verschwunden.


----------



## Spacerat (14. Dez 2011)

[ot]Im übrigen... Ich bin mir sicher, dass dies ein Fehler im Windows-Dateisystem und kein Java Bug ist. Das schliesse ich daraus, weil man von vielen Fremddateisystemen (Amiga-FFS, Ext usw.) Dateien nach NTFS kopieren kann, diese aber anschliessend dort weder lesen noch umbenennen geschweige denn löschen kann.[/ot]Neuinstallation? Ist bei solchen Lapalien stets die letzte Idee, meistens gibt es eine einfachere Lösung, wie z.B. einen HEX-Editor mit dem man blockweise auf ein Dateisystem zugreifen kann.


----------



## pl4gu33 (14. Dez 2011)

mm was ne alternative wäre, wenn du z.b. Ubuntu drauf hast damit löschen sollte doch eigentl. gehen...
oder mit ner Ubuntu CD die LiveCD starten,.. ich bin mir aber nicht sicher, ob man damit auf die Festplatten zugreifen kann bzw. Konsole benutzen kann

aber doch nicht gleich Format bei sowas  
und wenn schon habe ich halt nen Ordner, den ich nicht löschen kann


----------



## Massta (14. Dez 2011)

irgendjemand hat gesagt.:


> heißt also : die datei wurde entweder überhaupt nicht angelegt ... oder sie hat einen völlig anderen namen ...



Die Datei wurde erstellt, sie ist im Explorer und lässt sich natürlich nicht löschen. Da sind auch keine offenen Streams, da die Datei 1. schon mehrere Tage drauf ist und 2. KEIN PROGRAMM DIE DATEI FINDEN KANN!!
Sie ist tatsächlich ausschließlich im Windows-Explorer und nirgendwo sonst zu finden. Löschen, verschieben und kopieren geht nicht - wenn man jedoch den Unterordner kopiert gibts keinen Fehler, die Datei wird einfach nicht mitkopiert.

Ich hab Windows 7 und keine Interesse daran das System neu aufzusetzen, außer es ist unbedingt notwendig. 



xehpuk hat gesagt.:


> Hach ja, das Problem hatte ich auch vor etwa zwei Jahren. Über eine Java-Anwendung einen Dateinamen mit einem Doppelpunkt drin erstellt. Weder die Datei, noch
> übergeordnete Ordner ließen sich durch den genannten Fehler löschen.



Jup, genau mein Problem.

Und die Sachen mit Cmd hab ich alle schon durchprobiert.. Cmd kratzt ab dabei


----------



## AmunRa (14. Dez 2011)

Lad dir eine Linux LiveCd herunter und Boot von CD dort kannst du dann die Festplatte mounten und versuchen dort zu loeschen.
wenn das Loeschen geht, sollte es nach her auch keine Probleme mehr in deinem Win7 geben

wenn du dich nicht mit Linux auskennst, solltest du aber umbedingt einen zweiten Computer neben dir stehen haben mit dem du im Internet suchen kannst


----------



## Massta (14. Dez 2011)

Korrekt, hab noch eine 2., ähnliche Datei gefunden )

Zu TotalCommander.. Computer sagt NEIN

ImageShack® - Online Photo and Video Hosting

Ja, ich habs als Administrator ausgeführt und ja, das System kann die angegebene Datei nicht finden.


----------



## Gast2 (14. Dez 2011)

Ich hatte so ein Problem schon mal unabhängig von Java. Eine Datei, mit ungültigem Namen und Windows ließ sich nicht dazu bewegen das sch**** Ding zu löschen. 

Die Lösung war sowas von einfach: 

Schmeiss ne Ubuntu Live CD rein. Und lösch das Ding. Fertig. Das geht immer. Ubuntu weigert sich da einfach nicht ^^. Klingt zwar unglaublich aber unlöschbare Dateien lassen sich mit Ubuntu imemr löschen. 

Unsere IT bekams mit allen Windows Shred Tools die sie hatten nicht hin *fg*


----------



## Sonecc (14. Dez 2011)

Du kannst noch gute 10 - 20 tausend Programme ausprobieren.
Wie schonmal angedeuted wurde, könnte es sich um einen Fehler im Dateisystem handeln.
Der Versuch über Linux zu booten (live CD) und die Datei dort zu löschen ist meiner Meinung nach das beste was du tun kannst.


----------



## Massta (14. Dez 2011)

Okay danke Leute, ich werd das gleich heute Nachmittag versuchen aber gleich gehts erstmal wieder in die Schule


----------



## erdferkel (14. Dez 2011)

Windows legt die Dateien (egal ob mit oder ohne gültigen Namen) ziemlich ungünstig im Dateisystem ab. Es kann durchaus sein, dass also ein 'Teil' der Datei in einem fehlerhaften Bereich des Dateisystems auf der Platte liegt und sie deshalb nicht ansprechbar ist.

Ich würde erst mal folgendes machen. 


Alle Programme und dateien schliessen
Im Windows Explorer mit der rechten Maustaste die Partition auswählen auf der die Datei liegt
Jetzt im Kontextmenü Eigenschaften->Tools auswählen
"Jetzt prüfen" anklicken und "Dateisystemfehler automatisch korrigieren" und Fehlerhate Sektoren suchen/wiederherstellen aktivieren
Starten anklicken
 
Sollte es sich um das Systemlaufwerk handeln, wird die Meldung „Der Datenträger kann nicht überprüft werden, während er in Verwendung ist“ angezeigt. Klicken Sie dann auf „Datenprüfung planen“, um die Festplatte beim nächsten Neustart auf Fehler überprüfen zu lassen.

Schneller geht es wenn Du die Kommandozeile als Admin aufrufst und dort eingibst: 
"CHKDSK x: /F /R" (wobei x Deinem Laufwerksbuchstaben entspricht)

Im Normalfall solltest Du die Datei danach umbenennen und danach löschen können. 

Sollte es wieder erwarten immer noch nicht gehen, dann nutze wie bereits erwähnt ein Ubuntu (oder ein anderes Livesystem Deiner Wahl). Dein Windows neu installieren brauchst Du deswegen nun wirklich nicht.

mfg


----------



## Spacerat (14. Dez 2011)

@erdferkel: Das Problem bei solchen Dateien ist keineswegs ein meinetwegen schon vorher gewesenes, defektes Dateisystem - CHKDSK hilft da gar nichts, sondern vielmehr die Tatsache, dass es im API des NTFS eine Möglichkeit gibt, Dateien mit unzulässigen Namen zu schreiben - wenn man will vllt. sogar auch "Steuercodes" - aber nicht wieder zu löschen. Der Name, der dann im Explorer erscheint mag dann vllt. gültig erscheinen, aber wenn man den Verzeichniseintrag - sofern man ihn bei steigender Festplattenkapazität auch noch findet - mit einem HEX-Editor genauer unter die Lupe nimmt, erkennt man das Problem. Wer weis, wie lange das Löschen solcher Dateien noch mit microsoftfremden Implementationen des NTFS (Linux, Unix usw.) funktioniert.
@TO: Acronis Disk-Director schon ausprobiert?


----------



## Massta (14. Dez 2011)

erdferkel hat gesagt.:


> Alle Programme und dateien schliessen
> Im Windows Explorer mit der rechten Maustaste die Partition auswählen auf der die Datei liegt
> Jetzt im Kontextmenü Eigenschaften->Tools auswählen
> "Jetzt prüfen" anklicken und "Dateisystemfehler automatisch korrigieren" und Fehlerhate Sektoren suchen/wiederherstellen aktivieren
> ...



Alles erledigt. Kein Erfolg, wie erwartet... So langsam wird das echt nervig. Hatte leider keine Zeit heute Linux zu benutzen aber morgen werd ich mir das mal angucken.


----------



## erdferkel (14. Dez 2011)

@Spacerat

Bisher bekam ich auf diese Art oder über Ubuntu auch die hartnäckigeren Fälle weg. Und ein fehlerhaftes Dateisystem ist ja oft genug die Ursache/das Symtom für verschiedenste Probleme.



> ...aber wenn man den Verzeichniseintrag - sofern man ihn bei steigender Festplattenkapazität auch noch findet


Sprichst Du beim Verzeichniseintrag von der Datei als solcher oder vom Eintrag dieser in die MFT?



> mit einem HEX-Editor genauer unter die Lupe nimmt, erkennt man das Problem.


Worauf müsste ich achten um "das Problem" zu erkennen? Ich finde diesen Ansatz interessant und würde mir das gerne mal genauer anschauen. 

mfg
erdferkel


----------



## Spacerat (14. Dez 2011)

MFT (Master File Table), FAT (File Allocation Table), wie auch immer... Verzeichniseinträge sind von Dateisystem zu Dateisystem anders bzw. auch nur anders benannt. Welche Informationen in solchen Einträgen stehen ist ebenfalls bis auf einen Pflichteintrag verschieden. Der Pflichteintrag ist der Name der Datei und dieser wird - von vorne herein verschlüsselte DS ausgenommen - stets im Klartext (ASCII, UTF) abgespeichert. Hat man erstmal einen vom Namen her fehlerhaften Eintrag gefunden, wird man im HEX-Editor garantiert sofort erkennen, welche Zeichen für den Namen ungültig sind. Natürlich geht es einem bei der gezielten Suche nach einem bestimmten Namen zunächst einmal nicht besser als dem BS, man sucht sich tot und findet nichts. Man sollte dazu also von Anfang an schon Suchmuster einsetzen.


----------



## irgendjemand (15. Dez 2011)

@TO
in deinem screen erkennt man im HG deutlich AERO ... was darauf hinweist das du meinen hinweis diese aktion IM ABGESICHERTEN MODUS durchzuführen ignoriert hast ...

warum java diese datei überhaupt anlegen konnte -> BUG in der NTFS-api ! *und wenn jetzt hier irgendwer mit diesem dummen spruch : not bug but feature ... an kommt ... der kann TO gerne erklären wie er besagtes file löschen kann*

im allgemeinen würde ich *wenn TotalCMD selbst im safe-mode NEIN sagt* auch zu live-systemen greifen *wobei ich im gegensatz zu vielen anderen hier mit einem Windows-PE arbeiten würde da dies legitim auf NTFS zugreifen kann ... unix-systeme haben nur einen durch reverse-engineering erstellt pseudo-treiber der gerade bei schreib-operationen zu schweren fehlern führen kann *vote : M$ release NTFS-api !* ... zum lesen eignet sich sowas aber meist recht gut ...

win-pe : sehr zu empfehlen BartPE ... setzt zwar auf XP auf *desshalb : XP-disc nötig* ... aber ist IMHO eines der besten
ansonsten : es gibt mitlerweile auch tools mit denen man mit einer 7-dvd ein 7-livesystem bauen kann *leider noch nicht selbst ausprobiert* ...
soll mit patching sogar möglich sein das ganze auf dem aktuellen patch-level *SP1 + alle updates* auch "zu installieren" ... wobei das live-system dann anstatt in den RAM auf die platte geschrieben wird ... kenn mich aber wie gesagt nur flüchtig mit aus da ichs selbst noch nich gemacht habe ..


----------

