2 votes

File.delete() ne supprime pas les liens symboliques sur Android ?

Je ne peux pas supprimer un lien symbolique sur Android. Je ne peux pas avec File.delete() et ni avec exec("rm " + verFile.getPath())

J'ai un lien symbolique

com.example.app/mydata/12345.ver --> com.example.app/lib/library.so

qui a été créé par

Runtime.getRuntime().exec(String.format("ln -s %s %s", target, link));

Après la mise à jour (téléchargement d'un build.apk différent depuis le web), je veux supprimer ce lien en

File verFile = new File(dataDir, verFile);
Log.w("MyApp", "Deleting file " + verFile.getPath());
if (verFile.exists()) Log.w("MyApp", "File exists!");
try {
    Runtime.getRuntime().exec("rm " + verFile.getPath());
} catch( IOException ioex ) { Log.w("MyApp", "Failed to delete"); }

Je peux remplacer

Runtime.getRuntime().exec("rm " + verFile.getPath());

avec

verFile.delete()

mais cela n'a aucun effet (le fichier ne sera toujours pas supprimé).

De la adb logcat Je peux voir

W/MyApp   (13298): Deleting file /data/data/com.example.app/mydata/12345.ver
W/MyApp   (13298): File exists!

Mais le fichier 12345.ver est toujours là ! Il a les mêmes autorisations d'utilisateur/groupe que le reste de l'application (à l'exception de lib qui est détenu par le system utilisateur).

Un indice ?

1voto

maersi Points 11

Je sais que c'est un peu tard, mais Google m'a envoyé ici en essayant de résoudre un problème similaire. Toute tentative de suppression d'un lien symbolique particulier échoue avec le message confus "directory not empty". J'ai creusé un peu plus profondément, et j'ai trouvé que le fichier cible n'existait pas. J'en ai créé un et rm a fonctionné :-).

Il me semble qu'il s'agit d'un bug d'Android, mais je suis trop novice en la matière pour en être sûr.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X