出于某种原因,我需要在我的 apk 中加入一些默认文件,但我需要写入 sd 卡,因为我的应用程序尝试读取 sd 卡,我需要将我的默认文件第一次存储在 sd 卡中
怎么做
我已经看到很多 tuto tu 从 sd 卡中获取可绘制对象,但我不想相反,我会从我加入 apk 的默认文件在 sd 卡上写入文件
任何想法?我没有代码,因为我没有任何提示可以做到这一点
出于某种原因,我需要在我的 apk 中加入一些默认文件,但我需要写入 sd 卡,因为我的应用程序尝试读取 sd 卡,我需要将我的默认文件第一次存储在 sd 卡中
怎么做
我已经看到很多 tuto tu 从 sd 卡中获取可绘制对象,但我不想相反,我会从我加入 apk 的默认文件在 sd 卡上写入文件
任何想法?我没有代码,因为我没有任何提示可以做到这一点
压缩您的文件并将压缩文件(命名它my_raw_files.zip
)放入res/raw
Eclipse 中的文件夹中,它将与您的应用程序一起打包。然后你可以在你的应用程序第一次启动时将它复制到外部存储(“sdcard”):
private static final File USER_DIR = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator
+ "myfolder");
...
boolean dirCreated = USER_DIR.mkdirs();
if (dirCreated)
{
FilesUtil.unzipFiles(this.getResources().openRawResource(R.raw.my_raw_files),
USER_DIR.getAbsolutePath());
}
...
static public void unzipFiles(InputStream zipIS, String outputPath)
{
try
{
// unzip files into existing folder structure
ZipInputStream zin = new ZipInputStream(zipIS);
try
{
ZipEntry ze;
while ((ze = zin.getNextEntry()) != null)
{
if (!ze.isDirectory())
{
Log.d(TAG, "unzip " + ze.getName());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int count;
FileOutputStream fout = new FileOutputStream(outputPath + File.separator + ze.getName());
while ((count = zin.read(buffer)) != -1)
{
baos.write(buffer, 0, count);
byte[] bytes = baos.toByteArray();
fout.write(bytes);
baos.reset();
}
fout.close();
}
}
} finally
{
zin.close();
}
} catch (Exception e)
{
Log.e(TAG, "unzip", e);
}
}