首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android 资料读写 + sdcard + 文件的属性

2012-09-12 
Android 文件读写 + sdcard + 文件的属性#数据存储与访问@单元测试一.首先要继承AndroidTestCase二.方法名

Android 文件读写 + sdcard + 文件的属性

#数据存储与访问
@单元测试
一.首先要继承AndroidTestCase
二.方法名要以test为前缀
三.最好跑出例外
四.在AndroidManifest.xml添加如下配置
1. <instrumentation android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cn.itcast.action" android:label="Tests for My App" />

2.在application元素添加如下配置<uses-library android:name="android.test.runner" />

五.注意在Android中使不能用System.out.println();的如果看打印的结果我们需要在
Window - Show view - Android - LogCat
应用Log.i-信息 log.e错误 log.w警告
Log.i(TAG,"信息")
六.往手机的SDcard卡中存放数据

@android 为数据存储提供了多种方式
文件无非就是读写
一.文件 xml/txt等
1.Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问
,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
2.Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
3.Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
4.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
5.如果要想对sdcard进行读写需要在AndroidManifest.xml设置一下信息
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

应用举例
package cn.itcast.files.service;

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

import android.content.Context;
import android.os.Environment;
import android.util.Log;

public class FileService {
public static final String TAG = "FileService";
private Context context;
public FileService(Context context) {
this.context = context;
}
public void saveName(String name) throws Throwable{
FileOutputStream fos = context.openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
fos.write(name.getBytes());
fos.close();
}
public void saveNameToSdCard(String name) throws Throwable {
//在保存数据的时候要判断是否存在是否有写保护
//Environment.getExternalStorageDirectory() == new File("/sdcard");
if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
Log.e(TAG, "不可读");
return ;
}
File file = new File("/sdcard/itcast.txt");

FileOutputStream fos = new FileOutputStream(file);
fos.write(name.getBytes());
fos.close();
}
public String getNameWidthSdcard() throws Throwable {
File file = new File("/sdcard/itcast.txt");
FileInputStream fis = new FileInputStream(file);
byte bytes[] = new byte[1024];
int len = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len = fis.read(bytes)) != -1) {
baos.write(bytes,0, len);
}
fis.close();
baos.close();
byte[] name = baos.toByteArray();
return new String(name);
}
public String getName()throws Throwable {
FileInputStream fis = context.openFileInput("itcast.txt");
byte bytes[] = new byte[1024];
int len = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len = fis.read(bytes)) != -1) {
baos.write(bytes,0, len);
}
fis.close();
baos.close();
byte[] name = baos.toByteArray();
return new String(name);
}
}

访问其他应用

package cn.itcast.other;

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 OtherTest extends AndroidTestCase {
public static final String TAG = "Other";
public void testSaveName() throws Exception{
File file = new File("/data/data/cn.itcast.files/files/itcast.txt");
FileOutputStream fos = new FileOutputStream(file);
String name = "wangguangwangguangsdfsdfsd";
fos.write(name.getBytes());
fos.close();
}
public void testGetName() throws Exception{
File file = new File("/data/data/cn.itcast.files/files/itcast.txt");
FileInputStream fis = new FileInputStream(file);
byte bytes[] = new byte[1024];
int len = -1;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while((len = fis.read(bytes)) != -1) {
baos.write(bytes,0, len);
}
fis.close();
baos.close();
byte[] name = baos.toByteArray();
Log.i(TAG, new String(name));

}
}


二.SharedPreferences
三.SQLLite数据库
四.内容提供者(Content provider)
五.网络

热点排行