android 之数据存储(IO)

android 操作文件分为两种,

  第一种:直接写到手机内存中,手机内存有限。

  第二种:写到手机的内存卡(SD)中,进行操作文件。

  以下分为两种情况的读精心操作,一个简单的demo.在此做一个记录。

 代码。

package com.hkrt.action;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.RandomAccessFile;import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class IOtestActivity extends Activity {public EditText edit;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);edit = (EditText)this.findViewById(R.id.inputEdit);Button read = (Button)this.findViewById(R.id.read);Button write = (Button)this.findViewById(R.id.write);write.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
//				write(edit.getText().toString());writeDB(edit.getText().toString());Toast.makeText(IOtestActivity.this, "写入成功", 0).show();	}});read.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
//				String str=	read();String str=readSD();if(str!=null){Toast.makeText(IOtestActivity.this, "获取到的值:"+str, 0).show();	}}});}/**从手机内存中读取*/private String read() {StringBuffer sb = null;try {FileInputStream fis = openFileInput("info");byte[] buff = new byte[8192];int hasread = 0;sb = new StringBuffer();while ((hasread = fis.read(buff)) > 0) {sb.append(new String(buff, 0, hasread));}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return sb.toString();}/**写到手机内存中*/private void write(String content) {FileOutputStream fos = null;try {fos = openFileOutput("info", Context.MODE_APPEND);PrintStream ps = new PrintStream(fos);ps.print(content);} catch (FileNotFoundException e) {e.printStackTrace();} finally {if (fos != null) {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}/**从sd卡中取内容*/private String readSD(){FileInputStream fis=null;StringBuffer sb = new StringBuffer("");//检测是否有sd卡,有没有对sd卡进行读写的权限if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){File sdCardDir = Environment.getExternalStorageDirectory();//获取到文件的存储位置try {fis= new FileInputStream(new File(sdCardDir.getCanonicalFile()+"/info2"));BufferedReader br = new BufferedReader(new InputStreamReader(fis));String str=null;while((str=br.readLine())!=null){sb.append(str);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{if(fis!=null){try {fis.close();} catch (IOException e) {e.printStackTrace();}}}}return sb.toString();}/**把内容写到SD卡中*/private void writeDB(String str){RandomAccessFile random =null;if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){try {File sdCardDir = Environment.getExternalStorageDirectory();//获取到文件的存储位置File targetFile= new File(sdCardDir+"/info2");random=  new RandomAccessFile(targetFile, "rw"); random.seek(targetFile.length());random.write(str.getBytes());} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{if(random!=null){try {random.close();} catch (IOException e) {e.printStackTrace();}}}}}
}

效果图:


SD


转载于:https://www.cnblogs.com/java20130726/archive/2011/11/04/3218339.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Aspose.Java实现word转pdf,添加水印等操作

Aspose.Java实现word转pdf,添加水印等操作一. word转pdf二. 文档插入水印Aspose是一款商用版控件,支持各类文档操作,这里主要介绍如何在Springboot项目中使用破解版。 一. word转pdf 在项目中导入aspose.word包 百度网盘下载 提取码&#x…

SQL三种连接:内连接、外连接、交叉连接

SQL三种连接:内连接、外连接、交叉连接一、交叉连接(CROSS JOIN)二、内连接(INNER JOIN)三、外连接(LEFT JOIN、RIGHT JOIN、FULL JOIN)1.左外连接2.右外连接3.完整外连接准备两张表并以PersonI…

二叉树非递归先序遍历

二叉树的递归先序遍历很简单,假设二叉树的结点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValue; 4 BinaryTreeNode* m_pLeft; 5 BinaryTreeNode* m_pRight; 6 }; 递归先序遵循:根-左-右的顺序 1 void PreOrder(BinaryTreeNode* Root) 2 { 3 …

面向对象与基于对象 区别

很多人没有区分“面向对象”和“基于对象”两个不同的概念。面向对象的三大特点(封装,继承,多态)却一不可。通常“基于对象”是使用对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象&…

显示器调校与Soft Proofing ZZ

版权归原作者所有! http://www.cgan.net/science/popular/cookie/displayregulate.htm 自从桌面出版走到计算机上,显示器成为印前流程中重要的设备之一。从扫描、数码摄影、相片修改、排版等工序中,也可找到显示器的存在。但往往很多同业却忽…

SparkContext: Error initializing SparkContext解决方法

SparkContext: Error initializing SparkContext解决方法Spark在配置高可用集群中,出现报错 ERROR SparkContext: Error initializing SparkContext. java.net.ConnectException: Call From hadoop102/192.168.10.102 to hadoop102:8020 failed on connection excep…

tomcat 绑定 ip 及域名,限制非法域名访问

公司WEB 采用linuxtomcat架构。经常会收到电信的警告,说某个IP下挂用了未备案域名,如果不处理就封IP。鉴于此,需要将tomcat的访问地址进行限制,只允许通过IP地址或者自己指定的域名来访问。配置tomcat/conf/server.xml 文件&#…

数据库设计(四)概念数据模型

目标:本文主要介绍如何定义实体的主、次标识符。一、标识符标识符是实体中一个或多个属性的集合,可用来唯一标识实体中的一个实例。要强调的是,CDM中的标识符等价于PDM中的主键或候选键。每个实体都必须至少有一个标识符。如果实体只有一个标…

中文/英文换行总结

html部分 <div class"parent"><p class"p1">湿哒哒大的大大大的大的大大大的大的啊啊大大大啊大大打啊打大大大</p><p class"p2">湿哒哒大的大大大的大的大大大的大的啊啊大大大啊大大打啊打大大大</p><p clas…

萨蒂扬软件技术(南京)研发中心”落户高新区

萨蒂扬软件技术&#xff08;南京&#xff09;研发中心”落户高新区 2007-02-12“中国软件名城”成为南京吸引世界软件巨头强磁场“萨蒂扬软件技术&#xff08;南京&#xff09;研发中心”落户高新区 世界知名的印度软件企业巨头萨帝扬计算机服务有限公司挥师江苏亮出精彩第一笔…

Go学习笔记—多线程

多线程编程 ​ 一个进程可以包含多个线程&#xff0c;这些线程运行的一定是同一个程序&#xff08;进程程序&#xff09;&#xff0c;且都由当前进程中已经存在的线程通过系统调用的方式创建出来。进程是资源分配的基本单位&#xff0c;线程是调度运行的基本单位&#xff0c;线…

对象实体 参考标准

1usingSystem;2usingSystem.Data;34namespaceFramework.Components5{ 6 /**//// <summary> 7 /// 公告通知实体 8 /// </summary> 9 public class NoticeInfo 10 { 11 基础信息-------------------------------------------------------…

博客园贵团队可以给个解释么?

发表了一片文章&#xff0c;被博客园团队移除出首页&#xff0c;自认为没有违反规定&#xff0c;于是回复该消息&#xff0c;想询问原因&#xff0c;但是一直没得到回复&#xff0c;请问这是为什么呢&#xff0c; 为什么那么久了还是未读状态&#xff0c;为什么从来不给回复&am…

unity, 颜色随高度渐变shader

一&#xff0c;颜色随世界空间高度渐变。 Shader "Custom/heightGradual_worldSpace" { Properties { _Color ("Color", Color) (1,1,1,1) _MainTex ("Albedo (RGB)", 2D) "white" {} _Glossiness ("S…

IBM如何拥抱Spark

Spark是目前相当火热的开源计算框架&#xff0c;相对于Hadoop&#xff0c;Spark优势是高性能和易用性。Spark的高性能源于其采用内存储存数据&#xff0c;应用可以以内存的速度进行运算&#xff1b;Spark的易用性在于通用的API&#xff0c;用户可以编写复杂的并行计算程序&…

arcgis js 4.x 地图中加入图片

arcgis js 4.x版本&#xff0c;如何加入图片问题&#xff1a;如何将自定义图片放入到arcgis的图层当中&#xff1f;本人在网上查找的方法中&#xff0c;发现大部分方法只适用于3.x版本&#xff0c;只有一种引入自定义BaseDynamicLayer的方法可用&#xff0c;然而按照这种方式&a…

对你的的应用程序进行Debug

对你的的应用程序进行Debug 介绍如何使用Microsoft Visual Studio Code Name "Orcas" Beta 1对基于Silverlight的应用程序进行debugging .在Silverlight中debugging所使用的工具和技巧和其它的 Visual Studio projects是类似的. 想查看更多的关于debugging信息的, 查…

在.Net如何制作自定义的快捷方式(转)

我们用.Net安装程序生成的快捷方式是这样的&#xff0c;如下图&#xff1a;该图中目标所对应的文本框是灰色的&#xff0c;并且下方的查找目标和更改图标两个按钮也是不可用。这样我们根本就没有办法更改这个快捷方式。假如这时有个客户需要在程序启动的时候传入一些参数&#…

大数据——Kafka学习笔记

具体代码可以参考&#xff1a; https://github.com/Ostrich5yw/java4BigData/tree/master/java4Kafka

大数据——SparkCore学习笔记

Spark 一、Spark简介 Spark 是一种由 Scala 语言开发的快速、通用、可扩展的大数据分析引擎Spark Core 中提供了 Spark 最基础与最核心的功能Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL&#xff0c;用户可以使用 SQL 或者 Apache Hive 版本的 SQL 方言&am…