您的位置:首页 > 移动开发 > Android开发

android 中读写xml文件时取得路径的方法/data/sdcard/src

2013-08-14 10:45 381 查看
 
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对象,如果该文件夹不存在则用指定名称创建一个新的文件夹。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android XML Path