Если вы создаете объект File, который оборачивает каталог верхнего уровня, вы можете вызвать его метод mkdirs () для создания всех необходимых каталогов. Что-то вроде:
// create a File object for the parent directory
File wallpaperDirectory = new File("/sdcard/Wallpaper/");
// have the object build the directory structure, if needed.
wallpaperDirectory.mkdirs();
// create a File object for the output file
File outputFile = new File(wallpaperDirectory, filename);
// now attach the OutputStream to the file object, instead of a String representation
FileOutputStream fos = new FileOutputStream(outputFile);
Примечание. Возможно, было бы разумно использовать Environment.getExternalStorageDirectory () для получения каталога «SD-карта», поскольку это может измениться, если появится телефон с чем-то иным, чем SD-карта (например, встроенная флэш-память, iPhone). В любом случае вы должны помнить, что вам нужно проверить, чтобы убедиться, что это действительно так, поскольку SD-карта может быть удалена.
ОБНОВЛЕНИЕ: Начиная с API уровня 4 (1.6), вам также придется запрашивать разрешение. Примерно так (в манифесте) должно работать:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />