web-dev-qa-db-fra.com

Quels caractères sont autorisés dans les noms de fichiers sur Android?

Quels caractères spéciaux sont autorisés pour les noms de fichiers sur Android?

~!@#$%^&*()_+/\.,

Aussi, puis-je sauvegarder un fichier avec un nom Unicode?

45
alex2k8
  1. Sur Android (au moins par défaut), les noms de fichier codés au format UTF-8.

  2. On dirait que les caractères de nom de fichier réservés dépendent du système de fichiers monté ( http://en.wikipedia.org/wiki/Filename ).

J'ai considéré comme réservé:

private static final String ReservedChars = "|\\?*<\":>+[]/'";
35
alex2k8

Selon wiki et en supposant que vous utilisez un stockage de données externe avec FAT32.

Caractères autorisés dans les entrées de répertoire

sont

N'importe quel octet, à l'exception des valeurs 0 à 31, 127 (DEL) et: "* /: <>?\| +,.; = [] (Les minuscules a-z sont stockés sous la forme A-Z). Avec VFAT LFN, tout Unicode sauf NUL

8
kreker
final String[] ReservedChars = {"|", "\\", "?", "*", "<", "\"", ":", ">"};

for(String c :ReservedChars){
    System.out.println(dd.indexOf(c));
    dd.indexOf(c);
}
5
Blackbern

Ceci est correct InputFilter pour les noms de fichiers sous Android:

    InputFilter filter = new InputFilter()
    {
        public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) 
        { 
            if (source.length() < 1) return null;
            char last = source.charAt(source.length() - 1);
            String reservedChars = "?:\"*|/\\<>";
            if(reservedChars.indexOf(last) > -1) return source.subSequence(0, source.length() - 1);
            return null;
        }  
    };
4
Quark

J'ai testé cela rapidement sur mon Galaxy Note 8 sur Android 4.4.2. L'application par défaut Mes fichiers supprime utilement les caractères non valides, comme suit:

? : "* |/\ <>

Je mets tous les autres caractères spéciaux disponibles dans un nom de fichier et celui-ci est enregistré. Cela peut ne pas être uniforme dans toutes les versions d'Android, alors il vaut peut-être mieux rester prudent et les remplacer par des caractères similaires.

2
TopherC

Cela dépend clairement du système de fichiers et du système d’exploitation Android. Sur oneplus/oxygenOS, les seuls caractères de la réponse acceptée

private static final String ReservedChars = "|\\?*<\":>+[]/'";

que je ne pouvais pas utiliser pour renommer un fichier étaient/et *

Cependant, au niveau Android, la liste ci-dessus semble être judicieuse.

0
marzetti