zoukankan      html  css  js  c++  java
  • 读取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);

        }
    }
  • 相关阅读:
    ListIterator
    List与set
    iterator取集合元素
    我眼中的AI
    集合的共性方法
    集合转数组
    打开与关闭eclipse的自动补全功能
    Mr_matcher的细节1
    nodelet的应用
    nodelet的理解
  • 原文地址:https://www.cnblogs.com/lee0oo0/p/2759531.html
Copyright © 2011-2022 走看看