2015-07-17 4 views
0

Я хочу создать вспомогательную директорию, которая не является частной в каталоге Environment.DIRECTORY_PICTURES. Я использовал код, показанный ниже, но безрезультатно. Каталог создается, но он остается закрытым. Я не знаю, где я ошибаюсь.Как создать общий каталог во внутренней памяти в android

File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyImages"); 
file.mkdirs(); 
File f = new File(file,"Image1"); 
+0

«Каталог создан, но он остается конфиденциальным» - что вы подразумеваете под «частным», и как вы определили, что этот каталог «частный»? – CommonsWare

+0

не в состоянии увидеть это в моем телефоне –

+0

Как, в частности, вы пытаетесь его увидеть в своем телефоне? – CommonsWare

ответ

1

Во-первых, вы не создали файл, по крайней мере, в коде, показанном выше. Вы создали объект Java File, и вы создали каталог, но вы не создали файл для Image1, и поэтому ваш каталог пуст. Я не знаю, как заставить вашу пустую директорию подбирать что угодно, хотя вы должны ее увидеть, если вы используете adb shell или DDMS для изучения вашего устройства.

Если вы в конечном итоге напишите файл в этот каталог, обязательно позвоните getFD().sync() на FileOutputStream перед тем, как вы close(), что поток. Затем используйте MediaScannerConnection и его статический метод scanFile(), чтобы ваш вновь созданный файл был проиндексирован MediaStore. Пока вы это сделаете, ваш вновь созданный файл не будет отображаться через MTP или многие сторонние приложения.

+0

'Обязательно вызовите функцию getFD(). Sync() в FileOutputStream, прежде чем закрыть() этот поток.'. ? Я никогда не видел вызов getFD.sync() раньше. Для чего это необходимо? – greenapps

+0

@greenapps: 'sync()' в 'FileDescriptor' гарантирует, что кэширование записи, выполненное на уровне файловой системы, сбросило его буферы (' flush() 'в Java просто очищает буферы Java). Прежде чем пытаться подключить стороннее приложение или демон MTP, я рекомендую 'sync()'. – CommonsWare

+0

Хорошо. Но я не вижу файлового дескриптора, как вы сначала сказали, чтобы использовать его в потоке вывода файла. Как бы такое утверждение выглядело, если у меня есть FileOutputStream? – greenapps

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