Lorsque je monte ma carte SD sur mon galaxy SIII, les fichiers et les dossiers de la carte contenant des caractères qui ne sont pas dans la plage ASCII sont corrompus. Pour cela, il suffit de sélectionner "Démonter la carte" dans les paramètres de stockage et de la remonter. Il n'est pas nécessaire de retirer physiquement la carte et de la remettre en place. Le fait d'éteindre et de rallumer le téléphone entraîne également une corruption.
Les dossiers, lorsqu'ils sont affichés avec un gestionnaire de fichiers sur le téléphone, apparaissent comme des fichiers de taille nulle avec une date du 31 décembre 1969 (qui est l'époque de Linux) et il est impossible de naviguer pour voir leur contenu. Ils apparaissent comme des dossiers vides. Les fichiers deviennent de taille zéro avec la même date et ne peuvent pas être ouverts ni affichés dans la Galerie, le lecteur de musique, etc. Ils s'ouvrent comme un dossier vide. (Voir image ci-dessous)
J'utilise la version stock d'Android 4.1.2.
La carte est une carte SanDisk 64gb micro sdxc (classe 10). Le problème est apparu lorsque la carte a été formatée en usine (avec exFAT) et également après avoir été formatée avec le téléphone (paramètres > stockage).
Des exemples de noms de fichiers qui provoquent la corruption de dossiers sont "Aa" ou "". Cela ne fait aucune différence si le fichier a été copié sur la carte à l'aide d'un transfert USB ou en retirant la carte et en utilisant un lecteur sur un PC Windows, ou si le nom a été modifié (à l'aide du téléphone) une fois que le fichier était sur la carte.
Les fichiers portant ces mêmes noms ne sont pas corrompus s'ils se trouvent dans la mémoire interne du téléphone et je peux les utiliser sans problème.
En retirant la carte et en l'utilisant sur un PC avec Windows 7, les fichiers sont visibles. Mais parfois, les dossiers concernés apparaissent en double. C'est-à-dire, deux fois avec le même nom à la fois. La vérification du disque avec Windows signale des erreurs et tente de les corriger. Mais ensuite, en remettant la carte dans le téléphone, les fichiers sont à nouveau corrompus.
Comment puis-je empêcher cette corruption de se produire ?
Mise à jour : avec une carte de 2 Go formatée en FAT32, les fichiers n'ont pas été corrompus. Mais après l'avoir formatée en exFAT, j'ai pu reproduire la corruption des fichiers. Je pense que je peux exclure une mauvaise carte sd.
Pour plus d'informations, voici un rapport de Windows 7 après avoir exécuté checkdisk. Notez que les 3 fichiers existaient dans le répertoire TestFolder, qui était corrompu :
[Window Title]
Checking Disk Removable Disk (M:)
[Main Instruction]
Some problems were found and fixed
[Content]
Any files that were affected by these problems were moved to a folder named "Found" on the device or disk. Your device or disk is now ready to use.
If you removed the device or disk before all files were fully written to it, parts of some files might still be missing. If so, go back to the source and recopy those files to your device or disk.
[^] Hide details [Close]
[Expanded Information]
Volume Serial Number is 6518-E54A
Windows is verifying files and folders...
Corruption was found while examining files in directory \TestFolder\ (0).
Corruption was found while examining files in directory \TestFolder\ (3).
Corruption was found while examining files in directory \TestFolder\ (6).
Corruption was found while examining files and directories.
File and folder verification is complete.
Windows has made corrections to the file system.
62363648 KB total disk space.
41656576 KB in 43 files.
768 KB in 6 indexes.
256 KB in use by the system.
20706048 KB available on disk.
131072 bytes in each allocation unit.
487216 total allocation units on disk.
161766 allocation units available on disk.
Les dossiers ne sont pas corrompus s'ils sont créés sur le téléphone avec des noms hébreux, puis démontés et vérifiés sur Windows. Seulement après le remontage sur le téléphone.
PLUS DE DONNÉES : il s'agit, je pense, d'informations pertinentes provenant de adb logcat
:
I//system/bin/fsck.exfat( 1897): fsck.exfat 1.1.0p2
I//system/bin/fsck.exfat( 1897): [fsck] Invalid dir entry: (92675,0)
I//system/bin/fsck.exfat( 1897): [fsck] Wrong dir entry name hash
I//system/bin/fsck.exfat( 1897): [fsck] Successfully recovered
I//system/bin/fsck.exfat( 1897): Filesystem was modified.
I/logwrapper( 1897): /system/bin/fsck.exfat terminated by exit(4)
W/Vold ( 1897): exfat -> Filesystem modified - rechecking (pass 2)
E/Vold ( 1897): MDM :: sdCardWriteAccessBlocked 0
D/Vold ( 1897): Detected exFAT file system.
Et lorsque je démarre sans les noms de fichiers problématiques, j'obtiens à la place une jolie petite
I//system/bin/fsck.exfat( 1897): No errors
I/Vold ( 1897): exfat -> Filesystem check completed OK
Et de adb shell
Je peux essayer de voir les fauteurs de trouble (après le remontage, notez 2 répertoires avec apparemment le même nom, qui dans une console Windows semble être affiché comme 2 caractères par caractère unicode) :
shell@android:/storage/extSdCard/Test $ ls * -l
ls * -l
drwxrwxr-x system media_rw 2013-02-18 18:39 ÉæÆ
ÉæÆ: No such file or directory
1|shell@android:/storage/extSdCard/Test $