读取Assets所存在的文件,并存入sdcard里面

public class AssetsDemoActivity extends Activity implements OnClickListener {
    private Button read, write;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        read = (Button) findViewById(R.id.read);
        write = (Button) findViewById(R.id.write);
        read.setOnClickListener(this);
        write.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.read:
            // 异步操作读取并存入sdcard
            new Async() {

                @Override
                public void doPostExecute(Object object) {
                    Toast.makeText(AssetsDemoActivity.this, "已保存文件", Toast.LENGTH_LONG).show();
                }

                @Override
                protected Void doInBackground(Void... params) {
                    try {
                        readFileFromAssets();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    return null;
                }

            }.execute();

            break;
        case R.id.write:
            // 不写了
            break;
        default:
            break;
        }
    }

    private void readFileFromAssets() throws IOException {
        AssetManager aa = getAssets();
        String[] file = aa.list("www");
        for (int i = 0; i < file.length; i++) {

            InputStream iStream = getAssets().open("www/" + file[i]);
            byte[] buffer = new byte[1024];
            int count = iStream.read(buffer);
//            String s = new String(buffer, 0, count);
            
// System.out.println(s);

            if (isHaveSDCard()) {
                File f = new File(Environment.getExternalStorageDirectory().getPath() + "/www/");
                if (!f.exists()) {
                    f.mkdirs();
                }

                FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + "/www/"
                        + file[i]);
                fos.write(buffer, 0, count);
                fos.close();
            }
            
        }
    }

    // 判断SDCard是否存在
    private boolean isHaveSDCard() {
        String status = Environment.getExternalStorageState();
        if (status.equals(Environment.MEDIA_MOUNTED)) {
            return true;
        } else {
            return false;
        }
    }

    // 异步操作类,在onPreExecute完善进度条框
    private abstract class Async extends AsyncTask<Void, Void, Void> {
        AlertDialog.Builder dialog;
        Dialog d;

        @Override
        protected void onPostExecute(Void result) {
            d.dismiss();
            // 直接调用这个方法
            doPostExecute(result);
            super.onPostExecute(result);
        }

        @Override
        protected void onPreExecute() {
            dialog = new AlertDialog.Builder(AssetsDemoActivity.this);
            dialog.setTitle("正在保存...");
            d = dialog.show();
            super.onPreExecute();
        }

        // 自定义的异步线程处理完的操作
        public abstract void doPostExecute(Object object);

    }
}
原文地址:https://www.cnblogs.com/lee0oo0/p/2759531.html