读取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);
}
}
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);
}
}