2013-04-02 8 views
3

У меня есть приложение, которое заставляет меня выбирать файл через файловый проводник (файл хранится на sd), а затем читает его.Приложение для Android, как сохранить и получить файл внутри приложения

Я хочу изменить его, поэтому он имеет файл непосредственно в приложении и читает файл из «внутри». Где я должен поместить файл в проект? Как я могу получить к нему доступ?

+0

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

ответ

0

Да, вы можете поместить файл в папке/папку активов, и получить следующий образ:

AssetManager assetManager = getAssets(); 
InputStream instream = assetManager.open("file.txt"); 

или Рез/сырую папка:

InputStream raw = getResources().openRawResource(R.raw.file); 

Если вы хотите изменить его, вы» ll иметь возможность только записать файл во внешнее хранилище (например, sdcard), или во внутреннее хранилище (под вашей папкой приложения data/data/package_name/). Если вы храните файл во внешнем хранилище, он будет сохраняться до тех пор, пока пользователь не удалит файл вручную вручную или программно. Но если вы сохраните этот файл во внутреннем хранилище, он будет удален, если пользователь удалит приложение или очистит кэш приложения.

+0

Я думаю, что существует ограничение на количество байтов, читаемых из папки с данными. –

0

Demo

File myExternalFile; 

if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) { 
      saveToExternalStorage.setEnabled(false); 
     } else { 
      myExternalFile = new File(getExternalFilesDir(filepath), filename); 
     } 

сохранения внешнего хранения (FileOutputStream)

try { 
       FileOutputStream fos = new FileOutputStream(myExternalFile); 
       fos.write(myInputText.getText().toString().getBytes()); 
       fos.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      myInputText.setText(""); 
      responseText.setText("Saved to External Storage.(StorageFile.txt)"); 

Получить External Storage (FileInputStream)

try { 
       FileInputStream fis = new FileInputStream(myExternalFile); 
       BufferedReader br = new BufferedReader(
         new InputStreamReader(fis)); 
       String strLine; 
       while ((strLine = br.readLine()) != null) { 
        myData = myData + strLine; 
       } 
       in.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      myInputText.setText(myData); 
      responseText 
        .setText("Data retrieved from Internal Storage.(StorageFile.txt)"); 
+0

Пожалуйста, не используйте DataInputStream для чтения текстового файла. Вам это не нужно, поэтому, пожалуйста, удалите его, так как люди могут скопировать этот код. –

+0

@PeterLawrey: Тогда какой класс должен использовать? –

+0

Используйте другие классы, которые у вас уже есть. DataInputStream избыточен, и этот плохой пример копируется около 30 раз каждый месяц при переполнении стека. –

3

Вы можете сохранить файл внутри вашего проекта с помощью следующих код:

File cDir = getApplication().getExternalFilesDir(null); 
File saveFilePath = new File(cDir.getPath() + "/" + "yourfilename"); 

Вы можете увидеть сохраненный файл в папке «файлы» вашего имени вашего приложения на вашем устройстве.

Попробуйте следующий путь в устройстве:

File manager >> Android >> data >> "your package name" >> files >> new file. 
Смежные вопросы