2012-03-05 3 views
4

Добрый день все,Как мы получаем разделители файлов, используемые разными файловыми системами?

Из чего я понимаю, у Android есть (как минимум) 2 файловые системы. Один из них относится к «внутреннему» хранилищу (например,/data и/system), а другой для «внешнего» хранилища (например,/mnt/sdcard),

Это означает, что при сохранении файлов во «внутреннем» хранилище (Context.getFilesDir, Context.getCacheDir), используемый разделитель файлов может отличаться от того, когда мы сохраняем файлы во «внешнем» хранилище (Context.getExternalFilesDir, Context.getExternalCacheDir, Environment.getExternalStoragePublicDirectory), но java.io.File.separator, похоже, дает нам информацию о используемой файловой системе «по умолчанию».

Как мы можем использовать различные файловые разделители, используемые различными файловыми системами на Android?

Я пробовал java.nio.file.spi.FileSystemProvider.installedProviders(), но это выглядит как android doesn't have this package.

Есть ли способ получить список файловых систем на Android?

+3

Что заставляет вас думать, что разделитель путей может быть другим? В целом, ОС - это Linux, а файловая система обрабатывается ОС. –

+0

@ EugeneMayevski'EldoSCorp Хмм, я слышал о подключении внешнего накопителя на NTFS, поэтому я думаю, что они могут быть разными – Pacerier

+0

Здравый смысл подсказывает мне, что драйвер должен следовать правилам маршрута на платформе, для которой он построен (по крайней мере, это так на Windows и MacOS X), поэтому даже драйвер NTFS будет работать с прямыми косыми чертами (которые, кстати, действительны и для Windows) в качестве разделителей путей. И большинство функций ОС будут обрабатывать только косые черты в любом случае. –

ответ

4

Из чего я понимаю, у Android есть (как минимум) 2 файловые системы. Одним из них является для «внутреннего» хранения (например,/данных и/системы), а другой для «внешнего» хранения (например,/шоссе/SDCard),

Это было точным для Android 1.x и 2.x. Начиная с Android 3.0, внешнее хранилище - это просто каталог внутри внутреннего хранилища.

Это означает, что, когда мы сохраняем файлы «внутренний» хранение (Context.getFilesDir, Context.getCacheDir), файл используемый разделитель может отличаться от того, когда мы сохранить файлы на «внешний» хранение

Конечно нет. Сепараторы - это функция операционной системы, а не файловой системы.

Есть ли способ получить список файловых систем на Android?

Ничего не поддерживается. Приложения SDK должны использовать только внутреннее и внешнее хранилище, например, через API, которые вы указали в своем ответе.

Хм, я слышал о Горных внешний диск на NTFS, поэтому я думаю, что они могут быть разными

Вы ошибаетесь. Разделители файлов и путей не имеют никакого отношения к формату файловой системы.

Однако его не только разделители файлов, разделители файлов (разделители путей) также различаются между различными файловыми системами.

Вы ошибаетесь. Разделители файлов и путей не имеют никакого отношения к формату файловой системы.

+0

Спасибо, что легко переварить ответ =) – Pacerier

3

Если вы обеспокоены тем, что в коде вы помещаете жесткокодированный разделитель файлов, вы можете использовать File.separator вместо hardcoded "/".Это даст вам разделитель файлов, используемый Android, не заботясь о том, какая файловая система находится под

+0

простой, но элегантный –

Смежные вопросы