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

数据文件保存

2015-07-14 11:18 417 查看
将数据保存到文件中,文件目录是/data/data/包名/files

将写入方式单独写成一个类

package com.zcl.Service;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import android.content.Context;

public class FileService {

private Context context;
public FileService(Context context_){
context = context_;
}
/**
* 保存文件
* @param name 文件名
* @param content 文件内容
* @throws Exception
*/
public void save(String name,String content) throws Exception{
//输出文件,MODE_PRIVATE参数表示覆盖
FileOutputStream outputStream = context.openFileOutput(name, Context.MODE_PRIVATE);
outputStream.write(content.getBytes());
outputStream.close();
System.out.println("保存成功");
}
/**
* 追加文件内容
*/
public void add(String name,String content)throws Exception{
//使用追加模式,追加内容
FileOutputStream fileoutPutStream = context.openFileOutput(name, Context.MODE_APPEND);
fileoutPutStream.write(content.getBytes());
fileoutPutStream.close();
}
/**
* 被其他应用读取
*/
public void saveReadByOther(String name,String content) throws Exception{
FileOutputStream outputStream = context.openFileOutput(name, 1);//Context.MODE_WORLD_READABLE和MODE.WORLD_WRITEABLE过期直接用值来代替
outputStream.write(content.getBytes());
outputStream.close();
}
/**
* 被其他应用写入
*/
public void writeByOther(String name,String content) throws Exception{
FileOutputStream outputStream = context.openFileOutput(name,2);//Context.MODE_WORLD_WRITEABLE
outputStream.write(content.getBytes());
outputStream.close();
}
/**
* 读取文件内容
* @name 文件名
* @return 文件内容
* @throws Exception
*/
public String read(String name) throws Exception{
FileInputStream inputStream = context.openFileInput(name);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
//若读完就返回-1,没读完是多少就返回多少
int len = 0;
while((len = inputStream.read(buffer))!=-1){
//将读出来的流写到内存中去
outputStream.write(buffer, 0, len);
}
byte[] data = outputStream.toByteArray();
String content = new String(data);
inputStream.close();
outputStream.close();
return content;
}
}
在AndroidManifest.xml中一定要为其赋予权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>若在其他文件中对该文件的数据进行操作
package com.zcl.test;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import android.test.AndroidTestCase;
import android.util.Log;

public class AccessOtherAppPrivateTest extends AndroidTestCase {
private static final String TAG = "AccessOtherAppPrivateTest";
public void testOther() throws Exception{
String path = "/data/data/com.zcl.filedata/files/zcl_1";
File file = new File(path);
FileInputStream inputStream = new FileInputStream(file);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte[] byte_ = new byte[1024];
int len = 0;
while((len = inputStream.read(byte_))!=-1){
outputStream.write(byte_,0,len);
}
byte[] data = outputStream.toByteArray();
outputStream.close();
inputStream.close();
String dataString = new String(data);
Log.i(TAG, dataString);
}
public void writeFileData() throws Exception{
String path = "/data/data/com.zcl.filedata/files/zclwrite.txt";
File file = new File(path);
FileOutputStream outputStream = new FileOutputStream(file);
// //表示以追加的模式写入数据
// FileOutputStream outputStream_ = new FileOutputStream(file,true);
String addString = "addString";
outputStream.write(addString.getBytes());
outputStream.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 Android XML Java