Android数据存储
2015-06-09 11:28
453 查看
一.知识了解:
1.什么是数据流?
数据流(data stream)最初是通信领域使用的概念,代表传输中所使用的信息的数字编码信号序列。然而,我们所提到的数据流概念与此不同。这个概念最初在1998年由Henzinger在文献87中提出,他将数据流定义为“只能以事先规定好的顺序被读取一次的数据的一个序列”。数据流分为输入流(InputStream)和输出流(OutputStream)两类。
2.什么是输入流?
在Java中,能够读取一个字节序列的对象就称作一个输入流。输入流只能读不能写,可从键盘或文件中获得数据。
3.什么是输出流?
输出流可向显示器、打印机或文件中传输数据。
二.书写代码:
1.书写Model层,也就是FileService:
2.写测试类,即FileServiceTest.java:
3.进行配置清单文件:
4.进行Android测试:
5.测试结果,成功:
6.当测试结果成功后,书写控制层代码:
三.总结:
从这个案例中,我们可以总结出以下几点:
1:要熟练掌握Android MVC设计模式;
2:要清晰Android文件操作的基本思路;
3:要会处理JAVA异常。
1.什么是数据流?
数据流(data stream)最初是通信领域使用的概念,代表传输中所使用的信息的数字编码信号序列。然而,我们所提到的数据流概念与此不同。这个概念最初在1998年由Henzinger在文献87中提出,他将数据流定义为“只能以事先规定好的顺序被读取一次的数据的一个序列”。数据流分为输入流(InputStream)和输出流(OutputStream)两类。
2.什么是输入流?
在Java中,能够读取一个字节序列的对象就称作一个输入流。输入流只能读不能写,可从键盘或文件中获得数据。
3.什么是输出流?
输出流可向显示器、打印机或文件中传输数据。
二.书写代码:
1.书写Model层,也就是FileService:
package com.example.fileoperatedemo.service; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import android.content.Context; public class FileService { private Context context; private String fileName; public FileService(Context context,String fileName){ this.context=context; this.fileName=fileName; } public boolean save(String content){ BufferedWriter bw=null;// 缓冲区声明 boolean isSaveSucceed=false; try { FileOutputStream fos=context.openFileOutput(fileName,context.MODE_PRIVATE);//创建输出流 OutputStreamWriter writer=new OutputStreamWriter(fos);//创建读写器 bw=new BufferedWriter(writer);//创建一个使用默认大小输出缓冲区的缓冲字符输出流 bw.write(content); isSaveSucceed=true; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(bw!=null) try { bw.close(); } catch (IOException e) { e.printStackTrace(); } } return isSaveSucceed; } public String read(){ String line; StringBuilder sb=new StringBuilder(); //用于添加数据 BufferedReader br=null; try { FileInputStream fis=context.openFileInput(fileName);//创建文件流 br=new BufferedReader(new InputStreamReader(fis));//创建读写器 while((line=br.readLine())!=null){ sb.append(line); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ if(br!=null){ try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return sb.toString(); } }
2.写测试类,即FileServiceTest.java:
package com.example.fileoperatedemo.test; import com.example.fileoperatedemo.service.FileService; import android.test.AndroidTestCase; public class FileServieTest extends AndroidTestCase { public void testSave(){ FileService fileService=new FileService(getContext(), "test.txt"); fileService.save("赶紧去写作业!!!"); } }
3.进行配置清单文件:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.fileoperatedemo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.fileoperatedemo.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> <uses-library android:name="android.test.runner"/> </application> <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.fileoperatedemo" > </instrumentation> </manifest>
4.进行Android测试:
5.测试结果,成功:
6.当测试结果成功后,书写控制层代码:
package com.example.fileoperatedemo; import com.example.fileoperatedemo.service.FileService; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.Toast; //控制层 public class MainActivity extends Activity { private EditText etContent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initViews(); } private void initViews() { etContent=(EditText) findViewById(R.id.etContent); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void save(View view){ //从V获取数据 String content=etContent.getText().toString(); //调用模型层M进行处理 FileService fileService=new FileService(this, "data.txt"); boolean isSavesucceed=fileService.save(content); if(isSavesucceed){ Toast.makeText(this, "恭喜你,保存成功了", Toast.LENGTH_LONG).show(); } } }
三.总结:
从这个案例中,我们可以总结出以下几点:
1:要熟练掌握Android MVC设计模式;
2:要清晰Android文件操作的基本思路;
3:要会处理JAVA异常。
相关文章推荐
- Android 开发小仓库
- android自定义属性三部曲
- Android中创建快捷方式及删除快捷方式实现方法
- Listview异步加载图片之优化篇(有图有码有解释)
- android 外部单独编一个模块MAKEFILE示例
- android数据存储读取1:SharedPreferences(对比IOS)
- Android中的全局变量与局部变量使用小结
- gradle 编译android APK
- Android:自定义输入法(输入密码时防止第三方窃取)
- android数据存储-文件操作
- $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
- Android中Activity启动默认不显示输入法解决方法
- android中引入第三方jar包方法( java.lang.NoClassDefFoundError: com.sina.weibo.sdk.auth.AuthInfo)解决办法
- ListView的相关研究(二)
- android中dip、dp、px、sp和屏幕密度
- Android Studio 类库中配置Jpush 报错 java.lang.UnsatisfiedLinkError解决方案
- Android 自定义View使用示例(三)
- Android PopupWindow使用实例
- Android自定义控件——3D画廊和图像矩阵
- GitHub Android 开源项目 优秀博客