package com.eboy.readwritexml;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import com.eboy.domain.Person;
import com.eboy.readwritexml.R;
import com.eboy.service.PersonService;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
Button btn1;
Button btn2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn1 = (Button) findViewById(R.id.button1);// read
btn2 = (Button) findViewById(R.id.button2);// write
btn1.setOnClickListener(listener);
btn2.setOnClickListener(writeListener);
}
//写入按钮的监听
View.OnClickListener writeListener = new OnClickListener() {
public void onClick(View paramView) {
// TODO Auto-generated method stub
List<Person> persons = new ArrayList<Person>();
persons.add(new Person(11, "aaa", 25));
persons.add(new Person(22, "bbb", 35));
persons.add(new Person(33, "ccc", 45));
//往data/data/本工程/files/person1.xml中写入的路径
// File xmlFile = new File(MainActivity.this.getFilesDir(), "/person1.xml");
// System.out.println("路径为:"+MainActivity.this.getFilesDir()+"/person1.xml");
//向sdcard中写入的路径
//在往sdcard中写入文件时,在manifest.xml中加一个权限
//<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
String file_path = File.separator + "sdcard" + File.separator + "aaa.xml";
File xmlFile = new File(file_path);
try {
FileOutputStream outStream = new FileOutputStream(xmlFile);
PersonService.save(persons, outStream);
System.out.println("写入成功");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
//读取的监听
View.OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
//读取sdcard中内容的路径
String file_path = File.separator + "sdcard" + File.separator + "aaa.xml";
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(file_path);
//读取本工程下面的src文件夹下的person.xml文件
// InputStream inputStream = getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons;
try {
//读取/data/data/youPackageName/files的person1.xml文件
//打开/data/data/youPackageName/files的File。返回的是inputStream或者outputStream
//InputStream inputStream = MainActivity.this.openFileInput("person1.xml");
persons = PersonService.getPersons(inputStream);
for (Person person : persons) {
Toast.makeText(getApplicationContext(), person.toString(),
Toast.LENGTH_SHORT).show();
System.out.println("22222");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
参考自:http://blog.csdn.net/vvqiu/article/details/8551036
内部存储路径为/data/data/youPackageName/,下面讲解的各路径都是基于你自己的应用的内部存储路径下。所有内部存储中保存的文件在用户卸载应用的时候会被删除。
一、 files
1. Context.getFilesDir(),该方法返回/data/data/youPackageName/files的File对象。
2. Context.openFileInput()与Context.openFileOutput(),只能读取和写入files下的文件,返回的是FileInputStream和FileOutputStream对象。
3. Context.fileList(),返回files下所有的文件名,返回的是String[]对象。
4. Context.deleteFile(String),删除files下指定名称的文件。
二、cache
1. Context.getCacheDir(),该方法返回/data/data/youPackageName/cache的File对象。
三、custom dir
getDir(String name, int mode),返回/data/data/youPackageName/下的指定名称的文件夹File对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。