Хорошо, я видел это на источнике другого проекта, поэтому я не придумал, но он работает.
Чтобы добавить какой-либо файл в проект и впоследствии использовать его, вам нужно поместить файл (двоичный, xml или любой другой) в папку assets вашего проекта.
В этом примере я просто скопирую ресурс в файловую систему, чтобы впоследствии я мог получить к нему доступ, как к любому другому пользовательскому файлу. Вы также можете получить доступ к активам напрямую, посмотрите Ресурсы в документации.
public void copyfile(String fileName)
{
if (!new File(fileName).exists()){
try
{
InputStream localInputStream = getAssets().open(fileName);
FileOutputStream localFileOutputStream = getBaseContext().openFileOutput(fileName, MODE_PRIVATE);
byte[] arrayOfByte = new byte[1024];
int offset;
while ((offset = localInputStream.read(arrayOfByte))>0)
{
localFileOutputStream.write(arrayOfByte, 0, offset);
}
localFileOutputStream.close();
localInputStream.close();
// The next 3 lines are because I'm copying a binary that I plan
// to execute, so I need it to have execute permission.
StringBuilder command = new StringBuilder("chmod 700 ");
command.append(basedir + "/" + paramString);
Runtime.getRuntime().exec(command.toString());
Log.d(TAG, "File " + paramString + " copied successfully.");
}
catch (IOException localIOException)
{
localIOException.printStackTrace();
return;
}
}
else
Log.d(TAG, "No need to copy file " + paramString);
}
Я считаю, что, вероятно, есть лучший способ скопировать файл, но этот работает, и не замедляет мое приложение, даже если оно вызывается из onCreate (хотя все файлы, которые я копирую, имеют размер менее 100 КБ, поэтому для больших файлов вы наверное хочу отдельную ветку)
Вот как получить путь к вашим файлам:
String path = getBaseContext().getFilesDir().getAbsolutePath();
Если вы хотите записать файл по другому пути, например, «/ sdcard / DCIM / appPictures», я думаю, вы можете использовать этот код:
FileOutputStream outFile = FileOutputStream("/sdcard/DCIM/appPictures/" + fileName);
, а затем скопируйте его побайтно, как в примере выше.