1.安卓中文件的数据存储实例(将文件保存到手机自带存储空间中):

①MainActivity.java

public class MainActivity extends Activity implements OnClickListener{

private Button mButton;

private EditText etFilename;

private EditText etFileContent;

/**

* 文件的保存:

* 第一步:创建布局文件(包括文件名的填写,内容的填写);

* 第二步:在我们的主Activity中获取控件的对象,并给按钮设置监听器,用来完成获取填写内容,和保存文件的操作

* 第三步:通常我们都会将项目中的业务类放到service层中,因此我们需要创建业务类,并完成文件的写入功能

*/

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mButton=(Button) findViewById(R.id.button);

mButton.setOnClickListener(this);

}

@Override

public void onClick(View v) {

etFilename=(EditText) findViewById(R.id.filename);

etFileContent=(EditText) findViewById(R.id.filecontent);

String filename=etFilename.getText().toString();

String filecontent=etFileContent.getText().toString();

FileService service=new FileService(getApplicationContext());

try {

service.save(filename,filecontent);

Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_LONG).show();

} catch (Exception e) {

Toast.makeText(getApplicationContext(), R.string.fail, Toast.LENGTH_LONG);

e.printStackTrace();

}

}

}

②FileService .java

public class FileService {

private Context context;

public FileService(Context context) {

this.context = context;

}

//保存文件到手机内部存储

public void save(String filename,String filecontent) throws Exception{

/**

* FileOutputStream:文件输出流

* openFileOutput()方法中:

* 参数1.要保存的文件名称;参数2.保存文件的操作模式

* 这里我们使用私有操作模式,即创建出来的文件只能被本应用访问,其他应用无法访问该文件,

* 另外采用私有操作模式创建的文件,写入文件中的内容会覆盖源文件的内容

*/

FileOutputStream outputStream=context.openFileOutput(filename, Context.MODE_PRIVATE);

outputStream.write(filecontent.getBytes());

outputStream.close();

}

//读取文件从手机内部存储

public String read(String filename) throws Exception{

//FileInputStream:文件输入流

FileInputStream inputStream=context.openFileInput(filename);

ByteArrayOutputStream outputStream=new ByteArrayOutputStream();

byte[] buffer=new byte[1024];

int len=0;

while((len=inputStream.read(buffer)) != -1){

outputStream.write(buffer, 0, len);

}

byte[] data=outputStream.toByteArray();

return new String(data);

}

}

③单元测试类:FileServiceTest .java

public class FileServiceTest extends AndroidTestCase{

private static final String TAG="FileServiceTest";

//单元测试方法testSave()方法用来测试我们的save(String filename,String filecontent)方法是否有错

public void testSave() throws Throwable{

FileService service=new FileService(this.getContext());

service.save("456.txt", "sdfdgsdfasd");

Log.i(TAG, "成功");

}

//单元测试testRead()方法用来测试我们的read(String filename)方法是否有错

public void testRead() throws Throwable{

FileService service=new FileService(this.getContext());

String result=service.read("123.txt");

Log.i(TAG, result);

}

}

④清单文件AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.rookie.test1"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="10"

android:targetSdkVersion="10" />

<!--指定单元测试的唯一标识  -->

<instrumentation

android:name="android.test.InstrumentationTestRunner"

android:targetPackage="com.rookie.test1"

android:label="testapp"/>

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<!--添加单元测试环境  -->

<uses-library android:name="android.test.runner"/>

<activity

android:name=".MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

⑤布局文件activity_main.xml(省略)

2.安卓中文件的数据存储实例(将数据保存到手机的SD卡中)

要想将数据保存到sd卡中,我们首先要在清单文件中设置相关的使用权限,

如:

<!--在sd卡中创建文件与删除文件的权限  -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!--往sd卡中写入数据的权限  -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

然后我们需要在上面的那个实例中的FileService.java添加一个方法,

用来保存文件到手机sdcard

public void saveToSDCard(String filename,String filecontent) throws Exception{

File file=new File(Environment.getExternalStorageDirectory(), filename);

FileOutputStream outputStream=new FileOutputStream(file);

outputStream.write(filecontent.getBytes());

outputStream.close();

}

然后我们需要在MainActivity.java文件中将之前重写的onClick()方法改写成:

@Override

public void onClick(View v) {

etFilename=(EditText) findViewById(R.id.filename);

etFileContent=(EditText) findViewById(R.id.filecontent);

String filename=etFilename.getText().toString();

String filecontent=etFileContent.getText().toString();

FileService service=new FileService(getApplicationContext());

try {

//判断sd卡是否存在,并可以读写

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

service.saveToSDCard(filename, filecontent);

Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_LONG).show();

}else{

Toast.makeText(getApplicationContext(), R.string.sd_error, Toast.LENGTH_LONG).show();

}

} catch (Exception e) {

Toast.makeText(getApplicationContext(), R.string.fail, Toast.LENGTH_LONG);

e.printStackTrace();

}

}

至此,我们已经完成了文件写入sd卡的功能代码,那么运行一下试试看吧!

android开发之路10(文件的读写)的更多相关文章

  1. android开发之路09(浅谈SQLite数据库01)

    1.SQLite数据库: SQLite 是一个开源的嵌入式关系数据库,实现自包容.零配置.支持事务的SQL数据库引擎. 其特点是高度便携.使 用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同, ...

  2. android开发之路11(用SharedPreferences存储数据)

    Android平台给我们提供了一个SharedPreferences类,实际上SharedPreferences处理的就是一个key-value(键值对),它是 一个轻量级的存储类,特别适合用于保存软 ...

  3. Intent的七大组件——Android开发之路5

    ------Intent------ Android中三个核心组件——Activity.Services.BroadCastProvider都是通过Intent传递参数. startActivity( ...

  4. android开发之路12(android四大组件&Fragment&AsyncTask类)

    一.Activity组件1.简介:Activity组件是Android四大组件之一,通常一个Activity相当于一个用户界面,我们可以通过加载布局文件将Android提供的各种控件及自定义控件显示到 ...

  5. android开发之路13(实际开发常见问题及解决办法ING)

    1.DDMS下无法浏览SDcard? 在做音乐播放器的时候,想通过eclipse中的DDMS视图将音频文件push到sd卡中,发现总是报错 :Failed to push selection: Rea ...

  6. android开发之路08(ListView&Adapter)

    ListView控件介绍:用于将数据库中的数据或者网络中的数据通过列表的形式显示出来:ListView采用MVC模式将前端显示和后端数据进行分离. 也就是说,ListView控件在装载数据时并不是直接 ...

  7. android开发之路05

    一.获取res资源文件下values中内容的方式: 1.string.xml文件-------------------------------> 取值方式:getResource().getSt ...

  8. android开发之路03

    一.Activity1.如何在一个应用程序中定义多个Activity:①定义一个类,继承Activity:②在该类当中,复写Activity当中的onCreate方法:③在AndroidManifes ...

  9. android开发之路02(浅谈BroadcastReceiver)

    一.BroadcastReceiver (广播接收者)的作用是用来接收来自系统和应用中的广播.应用如下: 1.开机完成后系统会产生一条广播----->接收到这条广播就能实现开机启动服务的功能: ...

随机推荐

  1. Linux重复执行上条命令

    Linux系统下Shell重复执行上条命令的 4 种方法: 1.使用上方向键,并回车执行.2.按 !! 并回车执行.3.输入 !-1 并回车执行.4.按 Ctrl+P 并回车执行.

  2. android 源码编译中的错误 解决

    1.编译种错误提示: arm-none-linux-gnueabi-gcc: directory: No such file or directory arm-none-linux-gnueabi-g ...

  3. Hibernate、Mybatis 通过数据库表反向生成java类和配置

    一.通过MyEclipse生成Hibernate类文件和hbm.xml文件,或者annotation文件    (转载孙宇老师的文章) 二.Mybatis生成实体类和配置文件: myeclipse下生 ...

  4. Spring InitializingBean and DisposableBean example

    In Spring, InitializingBean and DisposableBean are two marker interfaces, a useful way for Spring to ...

  5. Socket连接与HTTP连接

    我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP.FTP.T ...

  6. MemCacheManager

    #region Fields private AreaRepository _areaRepository = new AreaRepository(); private ICacheManager ...

  7. NOSQL之旅---HBase

    最近因为项目原因,研究了Cassandra,Hbase等几个NoSQL数据库,最终决定采用HBase.在这里,我就向大家分享一下自己对HBase的理解. 在说HBase之前,我想再唠叨几句.做互联网应 ...

  8. 插入三层treeview代码

    #region treetView加载 private void treeViewLoad() { DataView dv = navds.tbSiteKind.AsDataView(); treeV ...

  9. MT4平台上mql4实现的基于macd指标的智能交易EA

    屌丝命苦,拼爹拼不过,拼后台没有,技术宅一枚,情商有问题,不会见人说人话见鬼说鬼话,所以在国庆熬着混着,工作也没啥大起色,想想就郁闷,难不成一辈子就只能这样了? 苦思冥想,想得一条路,那就是程序化交易 ...

  10. contiki-main.c 中的process系列函数学习笔记 <contiki学习笔记之六>

    说明:本文依然依赖于 contiki/platform/native/contiki-main.c 文件. ---------------------------------------------- ...