2016-01-18 5 views
0

Если я понимаю Android Storage Options правильно, в самом крайнем случае внутреннего и внешнего хранения есть 2 директории:Android openFileInput() для кеша?

Internal Storage Files = getFilesDir() 
Internal Storage Cache = getCacheDir() 
External Storage Files = getExternalFilesDir() 
External Storage Cache = getExternalCacheDir() 

FileInputStream и FileOutputStream обоих каталогов внешнего хранения могут быть созданы с помощью конструктора. Например:

File file = new File(getExternalFilesDir().getAbsolutePath() + File.separator + fileName); 
FileInputStream inputStream = new FileInputStream(file); 

Во внутренней памяти, однако, вы можете использовать только openFileInput() и openFileOutput() создать FileInputStream или FileOutputStream. Например:

File file = new File(getExternalFilesDir().getAbsolutePath() + File.separator + fileName); 
FileInputStream inputStream = openFileInput(file, Context.MODE_PRIVATE); 

И так openFileInput() и openFileOutput() создать FileInputStream и FileOutputStream из внутреннего хранения файлов getFilesDir(), я предполагаю, что конструктор FileInputStream и FileOutputStream единственный метод, который может быть использован для внутреннего хранения кэша getCacheDir(). Может ли кто-то с большим знанием проверить правильность приведенной выше информации?

ответ

1

Во внутреннем хранилище, однако, вы можете использовать openFileInput() и openFileOutput() для создания FileInputStream или FileOutputStream.

Нет, вы можете использовать getFilesDir() и getCacheDir() для создания места на internal storage, таких как new File(getCacheDir(), fileName).

Я предполагаю, что конструктор FileInputStream и FileOutputStream - единственный метод, который можно использовать для внутреннего кэша хранилища getCacheDir().

Там нет openFileInput() прямого эквивалента getCacheDir(), если это то, что вы имеете в виду.

+0

если это так, есть ли обходное решение для достижения 'openFileInput()' для 'getCacheDir()'? –

+0

@HendraAnggrian: используйте новый FileInputStream (новый файл (getCacheDir(), fileName)). – CommonsWare

+0

фантастический. еще одна проблема: можем ли мы использовать тот же метод для 'getFilesDir()'? Что-то вроде 'new FileInputStream (новый файл (getFilesDir(), fileName)). Как это отличается от 'openFileInput()'? –

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