Netsensei

Much Ado About Nothing

Don’t try to fake it

Hm. JAVA weirdness vandaag ontdekt. Men neme een bestand foobar.txt. Vervolgens beschouwen we even deze code:

File foo = new File('foobar.txt');<br> System.out.println(foo.getPath());<br> foo.renameTo(new File('barfoo.txt'));<br> System.out.println('foo.getPath());<br>

Dat zou pretty straightforward moeten zijn: de code hernoemt het foobar.txt bestand naar barfoo.txt. Voor en na de operatie wordt via de getPath() operatie het pad en de naam van het bestand opgehaald en getoond.

De logica dicteert dat nadat de bestandsnaam van het foo object is gewijzigd, de getPath() methode de nieuwe bestandsnaam zou weergeven.

Helemaal niet dus.

De getPath() methode blijft de oude naam nog altijd tonen. Mogelijk alternatief om dat op te vangen is werken met een extra File object:

File foo = new File('foobar.txt');<br> System.out.println(foo.getPath());<br> File newFoo = new File('barfoo.txt');<br> foo.renameTo(newFoo);<br> System.out.println('newFoo.getPath());<br>

Mijns insziens niet meteen het meest propere alternatief want het kost je geheugen, zeker als je met grote operaties bezig bent, maar het werkt wel. JAVA adepten onder ons, wat denken jullie ervan?