2015-08-06 4 views
0

Я хочу хранить файлы .docx, сгенерированные и модифицированные с помощью приложения Android, во внутреннюю память Android-телефонов (все это касается той же модели телефона, если это помогает). У меня есть загрузка шаблона (находится в приложении) и изменение рабочих полей, но я заблокирован о том, как сохранить файлы.Как получить доступ к внутреннему хранилищу в Android

Я использую docx4j, который имеет метод для сохранения:

private void writeDocxToStream(WordprocessingMLPackage template, 
     String target) throws IOException, Docx4JException { 
      File f = new File(target); 
      template.save(f); 
} 

Я пробовал другие, более «ручные» методы, но у меня всегда есть та же самая проблема:

, что должно быть на входе для целевого каталога?

Кажется, это легко сделать для внешнего хранения, но в отношении внутреннего хранения это что-то еще.

Когда я просто пытаюсь вывести строку в test.txt затем получить строку в его обратно, с классической BufferedReader, InputStreamReader, FileInputStream способом делать, я не могу получить эту информацию вообще.

Информация на эту тему очень рассеяна, я прошел после полудня, прочитав тысячи способов достижения хранилища, но ни одна из них не соответствует моей проблеме.

У меня есть <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> в моем манифесте, чтобы быть уверенным, но это ничего не меняет.

Более того, возможно, это связано с проблемой, я не могу получить доступ к файлам (с устройства или с компьютера) на своем тестовом устройстве (Samsung Galaxy 5S, который может запускать приложение), я, кажется, вполне все папки, но не любые файлы в них, кроме нескольких файлов xml и txt ... (Тем не менее, я все равно ничего не получаю при выполнении: write в EditText - сохранить в файле - сохранить файл в .txt - извлечь String - просмотреть строку в textView).

Это очень важно, поскольку я должен извлечь файлы .docx для дальнейшего использования после их создания.

Спасибо за ваши ответы и дайте мне знать, если я могу предоставить более подробную информацию, я знаю, что моя проблема неясно.

+0

'target' должен быть путь во внутренней памяти вашего приложения. Каков ваш код для вызова 'writeDocxToStream'? – alijandro

+0

'writeDocxToStream (wordMLPackage, (context.getDir (" testfile ", Context.MODE_WORLD_READABLE)). GetPath(). ToString() +"/test.docx ");' мой код –

ответ

0

Кажется, это легко сделать для внешнего хранения, но в отношении внутреннего хранения это что-то еще.

Чтобы написать external storage, можно использовать конструктор двухпараметрическое File, где вы обеспечить File объект, указывающий на какой-то корневой каталог на внешнем носителе, таком как:

new File(getExternalFilesDir(null), target); 

Чтобы написать internal storage, вы используете двухпараметрический конструктор File, в котором вы указываете объект File, указывающий на некоторое местоположение корня во внутреннем хранилище, например:

new File(getFilesDir(), target); 
0

Если вы пишете свой файл в частном внутреннем хранилище приложения, вам не нужно удерживать его android.permission.WRITE_EXTERNAL_STORAGE.

В своем коде, с вызовом

context.getDir("testfile", Context.MODE_WORLD_READABLE)).getPath().toString()+"/test.docx"; 

файл будет писать на путь

/data/data/com.yourpackage.name/app_testfile/test.docx 

Если запись успешно работать, вы можете читать и извлекать содержимое файла с помощью путь выше.

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