Android でファイル名に使用できる特殊文字は何ですか?
~!@#$%^&*()_+/\.,
また、ファイルをUnicode名で保存できますか?
Android でファイル名に使用できる特殊文字は何ですか?
~!@#$%^&*()_+/\.,
また、ファイルをUnicode名で保存できますか?
Android では (少なくともデフォルトでは) UTF-8 としてエンコードされたファイル名。
予約されたファイル名の文字は、マウントされているファイルシステム ( http://en.wikipedia.org/wiki/Filename ) によって異なるようです。
私は予約済みと見なしました:
private static final String ReservedChars = "|\\?*<\":>+[]/'";
wikiによると、FAT32の外部データストレージを使用していると仮定しています。
ディレクトリ エントリで使用できる文字
それは
値 0 ~ 31、127 (DEL) を除く任意のバイトと: " * / : < > ? \ | + , . ; = [] (小文字の a ~ z は AZ として格納されます。VFAT LFN では、NUL を除くすべての Unicode
final String[] ReservedChars = {"|", "\\", "?", "*", "<", "\"", ":", ">"};
for(String c :ReservedChars){
System.out.println(dd.indexOf(c));
dd.indexOf(c);
}
これは、Android のファイル名の正しいInputFilterです。
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;
}
};
Android 4.4.2のGalaxy Note 8でこれを簡単にテストしました。デフォルトのマイ ファイル アプリでは、次のような無効な文字がグレー表示されます。
? : " * | / \ < >
利用可能な他のすべての特殊文字をファイル名に入れ、保存しました。これは、Android のすべてのバージョンで一貫しているわけではないため、控えめにして、同様に意味のある文字に置き換えることをお勧めします。