2013-06-24 2 views
1

извините за мой английский, но я хочу писать на этом форуме, потому что, на мой взгляд, это лучший. Теперь моя проблема: Я хочу создать папку во внутреннем хранилище для совместного использования с 2 приложениями. в моем приложении, я загружаю Apk с моего сервера и запускаю его. Прежде, чем я использовал внешнее хранилище и все сработало. Теперь я хочу использовать внутреннее хранилище для пользователей, у которых нет внешнего хранилища.Создайте общую папку во внутреннем хранилище

Я использую это:

String folderPath = getFilesDir() + "Dir" 

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

Спасибо ..

+0

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

+1

Возможный дубликат [Как создать папку на SD-карте в Android] (http://stackoverflow.com/questions/6911041/how-to-create-folder-into-sd-card-in-android) –

+0

2 Брайан Роач , этот вопрос касается внешнего хранилища, а не внутреннего. –

ответ

1

this От поста:

Правильный путь:

  1. Создание файла для нужного каталога (например, путь к файлу = новый
  2. File (getFilesDir(), "myfolder");)
  3. Вызовите mkdirs() в этом файле, чтобы создать каталог, если он не существует
  4. Создайте файл для выходного файла (например, File mypath = new File (путь, «myfile.txt»);)
  5. Используйте стандартный ввод/вывод Java для записи в этот файл (например, используя новый BufferedWriter (новый FileWriter (mypath)))

Наслаждайтесь.

Кроме того, чтобы создать публичный файл я использую:

/** 
* Context.MODE_PRIVATE will create the file (or replace a file of the same name) and make it private to your application. 
* Other modes available are: MODE_APPEND, MODE_WORLD_READABLE, and MODE_WORLD_WRITEABLE. 
*/ 

public static void createInternalFile(Context theContext, String theFileName, byte[] theData, int theMode) 
{ 
    FileOutputStream fos = null; 

    try { 
     fos = theContext.openFileOutput(theFileName, theMode); 
     fos.write(theData); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     Log.e(TAG, "[createInternalFile]" + e.getMessage()); 
    } catch (IOException e) { 
     Log.e(TAG, "[createInternalFile]" + e.getMessage()); 
    } 
} 

Просто установите theMode в MODE_WORLD_WRITEABLE или MODE_WORLD_READABLE (обратите внимание, что они являются устаревшими от апи лвл 17).

Вы также можете использовать theContext.getDir();, но обратите внимание, что документ говорит:

Собирать, создавая при необходимости, новый каталог, в котором приложение может разместить свои собственные пользовательские файлы данных. Вы можете использовать возвращаемый объект File для создания и доступа к файлам в этом каталоге. Обратите внимание, что файлы, созданные через объект File, будут доступны только вашему собственному приложению; вы можете установить режим всего каталога, а не отдельных файлов.

С наилучшими пожеланиями.

+0

Я сталь не вижу свою папку. – Anto

+0

Могу ли я записать в папку «Загрузка», папку с носителями или другую папку во внутреннюю память? Спасибо – Anto

-1

попробовать ниже

File mydir = context.getDir("Newfolder", Context.MODE_PRIVATE); //Creating an internal dir; 
if(!mydir.exists) 
{ 
    mydir.mkdirs(); 
}  
+0

Context.MODE_PRIVATE - сделайте эту папку приватной)) Не устанавливайте ее, если хотите сделать ее общедоступной .. –

+0

Я пытался ее не устанавливать, но я не вижу папку в data/data/My_Package/Folder – Anto

-1

Это то, что я использовал и работает нормально для меня:

Строка extStorageDirectory = Environment.getExternalStorageDirectory().нанизывать();

Файл файла = новый файл (extStorageDirectory, fileName);

File parent=file.getParentFile(); 
     if(!parent.exists()){ 
      parent.mkdirs(); 
     } 

Это создаст новый каталог, если он еще не существует, или использует существующий, если он уже присутствует.

+0

Исправьте ссылки на внешнее хранилище, поскольку целью здесь является использование внутреннего хранилища. –

+0

Мне нужна запись во внутреннем хранилище – Anto

1

Вы можете создать общественность в существующей общей папке системы, есть некоторые общие папки доступны из внутренней памяти:

public static String DIRECTORY_MUSIC = "Music"; 
public static String DIRECTORY_PODCASTS = "Podcasts"; 
public static String DIRECTORY_RINGTONES = "Ringtones"; 
public static String DIRECTORY_ALARMS = "Alarms"; 
public static String DIRECTORY_NOTIFICATIONS = "Notifications"; 
public static String DIRECTORY_PICTURES = "Pictures"; 
public static String DIRECTORY_MOVIES = "Movies"; 
public static String DIRECTORY_DOWNLOADS = "Download"; 
public static String DIRECTORY_DCIM = "DCIM"; 
public static String DIRECTORY_DOCUMENTS = "Documents"; 

Чтобы создать папку, используйте этот код:

File myDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), "MyPublicFolder"); 
myDirectory.mkdir(); 

С этот пример, публика будет создана в Документах и ​​может быть видна в приложении любого приложения для Android.