天天看点

android获取asset文件存到SD卡

今晚刚好帮一个朋友写了这个小demo,觉得网上可能比较少。因此随便水一篇博客。XD~

以下以获取图片文件为例,text等其他文件也是同样的获取。

整体流程是(感觉CSDN流程图有bug)

第一步:

获取asset文件流

第二步(有时可跳过这层)s:

中间转化层,转化为中间文件类型,如图片就是bitmap

第三步:

将中间文件存入本地sd卡,或直接将asset文件流存入本地SdCard

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        getFileFromAsset("diaolin.png");
    }

    /*
     * 获取Asset内的文件夹
     * @param fileName 必须是完整文件名(文件名+格式)
     */
    private void getFileFromAsset(String fileName) {
        InputStream fileStream = null;
        try {
            //获取指定Assets文件流
            fileStream = getResources().getAssets().open(fileName);
            //转化为bitmap对象
            Bitmap bitmap = BitmapFactory.decodeStream(fileStream);
            saveInSdCard(fileName, bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /*
     * 保存到sb卡内
     * @param fileName 必须是完整文件名(文件名+格式)
     * @param bitmap
     */
    private void saveInSdCard(String filename, Bitmap bitmap) throws IOException {
        //检查是否存在sd卡
        String status = Environment.getExternalStorageState();
        if (!status.equals(Environment.MEDIA_MOUNTED)) {
            Toast.makeText(this, "请插入sd卡", Toast.LENGTH_LONG).show();
            return;
        }

        /*
         * 在Android中1.5、1.6的sdcard目录为/sdcard,而Android2.0以上都是/mnt/sdcard,因此如果我们在保存时直接写具体目录会不妥,因此我们可以使用:
         * Environment.getExternalStorageDirectory();获取sdcard目录;
         */
        String directory = Environment.getExternalStorageDirectory().toString() + "/lindiSecret";
        File rootFile = new File(directory);
        //如不存在文件夹,则新建文件夹
        if (!rootFile.exists())
            rootFile.mkdir();
        //在文件夹下加入获取的文件
        File file = new File(directory, filename);
        try {
            //文件输出流
            FileOutputStream out = new FileOutputStream(file);
            //bitmp压缩到本地,原图就100
            bitmap.compress(Bitmap.CompressFormat.PNG, , out);
            out.flush();
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}
           

最后别忘了,添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
           

看不明白的朋友,以下是下载链接

http://download.csdn.net/detail/u011435746/9101705