android能对手机内存读写速度测试进行读写吗

6192人阅读
Android(13)
Android数据存储之内存读写的两大内存
1、手机内存数据读写
&&&&&getFileDir( ) :&& 得到当前app在手机内存存储数据的位置
/data/data/当前app包名/files
&&&&&getCacheDir( ) : 得到当前app在手机内存存储数据的位置/data/data/当前app包名/cache
&&&&&openFileInput(String name) : 直接得到/data/data/当前app包名/files/name文件的输入流
&&&&&openFileOutput(String name,int mode) : 直接得到/data/data/当前app包名/files/name文件的输出流,mode为写入文件时的权限
2、sdcard数据读写
&&&&&Environment.getExternalStorageDirectory( ) :&& 得到当前app所在手机的sdcard位置/storage/sdcard&&&&
&&&&& Environment.getExternalStoragePublicDirectory(String type) :&& 得到当前app所在手机的sdcard位置下的公共子文件夹/storage/sdcard/....&
Android数据存储之内存读写应用实例
布局文件 activity_main.xml
&LinearLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical&
android:paddingBottom=&@dimen/activity_vertical_margin&
android:paddingLeft=&@dimen/activity_horizontal_margin&
android:paddingRight=&@dimen/activity_horizontal_margin&
android:paddingTop=&@dimen/activity_vertical_margin&
tools:context=&.MainActivity& &
android:id=&@+id/tv_main_memerysize&
android:layout_width=&match_parent&
android:layout_height=&80dip&
android:textSize=&20sp&
android:textColor=&#6666ff&
android:text=&内存大小&/&
android:id=&@+id/tv_main_sdcard&
android:layout_width=&match_parent&
android:layout_height=&40dip&
android:textSize=&20sp&
android:textColor=&#ff6666&
android:text=&SDCard存在否&/&
android:id=&@+id/tv_main_sdcardsize&
android:layout_width=&match_parent&
android:layout_height=&80dip&
android:textSize=&20sp&
android:textColor=&#ff6666&
android:text=&SDCard内存大小&/&
android:id=&@+id/et_main_content&
android:layout_width=&match_parent&
android:layout_height=&0dip&
android:layout_weight=&1&
android:textSize=&20sp&
android:text=&测试写入内存:\n将这里的文本信息保存到内存文件 testmemeryio.txt&/&
android:id=&@+id/btn_main_writememery&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&写入内存&/&
android:id=&@+id/btn_main_writesdcard&
android:layout_width=&match_parent&
android:layout_height=&wrap_content&
android:text=&写入sdcard&/&
&/LinearLayout&
示例代码 MainActivity.java
package com.yihui.
import java.io.FileOutputS
import java.io.IOE
import android.annotation.SuppressL
import android.app.A
import android.content.C
import android.os.B
import android.os.E
import android.os.StatFs;
import android.text.format.F
import android.view.V
import android.view.View.OnClickL
import android.widget.B
import android.widget.EditT
import android.widget.TextV
import android.widget.T
public class MainActivity extends Activity implements OnClickListener {
private TextView tv_main_
private TextView tv_main_
private TextView tv_main_
private EditText et_main_
private Button btn_main_
private Button btn_main_
private boolean sdcardMount =
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_main_memerysize = (TextView) findViewById(R.id.tv_main_memerysize);
tv_main_sdcard = (TextView) findViewById(R.id.tv_main_sdcard);
tv_main_sdcardsize = (TextView) findViewById(R.id.tv_main_sdcardsize);
et_main_content = (EditText) findViewById(R.id.et_main_content);
btn_main_writememery = (Button) findViewById(R.id.btn_main_writememery);
btn_main_writesdcard = (Button) findViewById(R.id.btn_main_writesdcard);
btn_main_writememery.setOnClickListener(this);
btn_main_writesdcard.setOnClickListener(this);
//判断sdcard是否已安装
tv_main_sdcard.setText(&sdcard未安装&);
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
sdcardMount =
tv_main_sdcard.setText(&sdcard已安装&);
//得到sdcard和内存的大小及可用容量
if(sdcardMount){
tv_main_sdcardsize.setText(&sdcard& + getStorgeFileSize(Environment.getExternalStorageDirectory().getPath()));
tv_main_sdcardsize.setText(&sdcard总内存:0MB; 可用内存:0MB&);
tv_main_memerysize.setText(&手机& + getStorgeFileSize(Environment.getDataDirectory().getPath()));
/* 两个按钮的监听事件,将内容写入内存文件testmemeryio.txt
public void onClick(View v) {
String text = et_main_content.getText().toString();
boolean success =
switch (v.getId()) {
case R.id.btn_main_writesdcard: //写入sdcard
FileOutputStream fos =
fos = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + &/m.txt&);
fos.write(text.getBytes(&utf-8&));
fos.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null){
fos.close();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, success == true ? &写入sdcard文件成功& : &写入sdcard文件失败&, 0).show();
case R.id.btn_main_writememery: //写入内存
FileOutputStream openFileOutput =
//使用openFileOutput()函数,直接在/data/data/包名/files/目录下创建文件
openFileOutput = openFileOutput(&testmemeryio.txt&, Context.MODE_PRIVATE); //私有模式写文件
openFileOutput.write(text.getBytes(&utf-8&));
openFileOutput.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(openFileOutput != null){
openFileOutput.close();
openFileOutput =
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(MainActivity.this, success == true ? &写入内存文件成功& : &写入内存文件失败&, 0).show();
/* 取得内存文件空间大小及可用大小 */
@SuppressLint(&NewApi&) private String getStorgeFileSize(String path){
String fileSizeDesc =
StatFs statFs = new StatFs(path);
//获得磁盘状态的对象
long blockSizeLong = statFs.getBlockSizeLong();
//获得磁盘一个扇区的大小
long blockCountLong = statFs.getBlockCountLong();
//获得磁盘空间总的扇区数
long availableBlocksLong = statFs.getAvailableBlocksLong(); //获得磁盘空间总的可用扇区数
fileSizeDesc = &总内存:& + Formatter.formatFileSize(MainActivity.this, blockSizeLong*blockCountLong)
+ &; 可用内存:& + Formatter.formatFileSize(MainActivity.this, blockSizeLong*availableBlocksLong);
return fileSizeD
注意:因为要读写SDCard,所以在项目里面的AndroidManifest.xml功能清单文件里面添加读写SDCard的权限
android:minSdkVersion=&8&
android:targetSdkVersion=&19& /&
&uses-permission android:name=&android.permission.READ_EXTERNAL_STORAGE&/&
&!-- sdcard读权限 --&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE&/& &!-- sdcard写权限 --&
......运行效果:
在File Explorer下可以看到
/data/data/com.yihui.iomemery/files/testmemeryio.txt文件,且写入的内容就是UI上面文本框里面的内容
&&&&&&&&&&&&&&&&&&&&& /storage/sdcard/m.txt文件,且写入的内容也是UI上面文本框里面的内容
Android数据存储之读写模式(读写权限)
Android是基于Linux操作系统的,所以Android的文件访问权限与Linux系统的文件访问权限是一致的,具体参考下图说明
1、Android数据访问权限实现方式
&& Context类的public abstract FileOutputStream openFileOutput(String name, int mode)
2、其中mode就是文件访问权限模式,主要4种模式
&&&Context.MODE_PRIVATE:私有模式(默认模式),只能被应用本身和同一群组的人访问;写入的内容覆盖原文件内容
&&&Context.MODE_APPEND:
追加模式也是私有模式,只能被应用本身和同一群组的人访问;如果文件存在就追加内容,如果文件不存在就新建文件并写入内容
&&&Context.MODE_WORLD_READABLE:
所有人可读权限
&&&Context.MODE_WORLD_WRITEABLE:所有人可写权限
&&& 也可通过多个组合同时拥有多个读写权限,Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE表示所有人可读+可写
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:236822次
积分:3013
积分:3013
排名:第9538名
原创:43篇
评论:14条
欢迎参阅转载指正,引用请注明http://blog.csdn.net/yihuiworld
TIPTOP QQ群:
文章:14篇
阅读:30751
阅读:29390
文章:14篇
阅读:46760
(2)(1)(1)(3)(1)(1)(1)(7)(8)(9)(9)(1)安卓编程如何让程序获得读写手机内存data/system_编程吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:177,829贴子:
安卓编程如何让程序获得读写手机内存data/system收藏
安卓编程如何让程序获得读写手机内存data/system下的文件,并可以删除?求代码
学习编程培训首选达内,金牌编程培训讲师授课,亿元级课程/师资投入,全程实战!达内编程培训采用领航TTS8.0教学平台,达内编程培训课程——先就业,后付款!
帮顶个帖,攒人品,说不定我就会升职加薪、当上总经理、出任CEO、迎娶白富美、走上人生巅峰,嘿嘿,想想还有点小激动。
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或本帖子已过去太久远了,不再提供回复功能。&的最新主题
1.不喜欢看长文字的直接看结论:经常人为清理内存不会使手机变得更流畅,而且增加一定量的运算资源、发热和电量损耗。
2.一键清理内存为什么不会使手机变快。这里先说说安卓为什么会越用越慢:苹果手机系统接收各种APP的消息是统一由系统代理的,各APP商家把消息发到苹果的服务器再分发到苹果手机。而安卓则是由各APP自己收取消息。所以苹果手机用于接收消息的后台就一个,安卓就是有多少APP接收消息就有多少个。也就是为什么安卓装APP越多越卡。所以你一键清理之后人家APP不可能说不接收消息了,结果就是众多APP后台重新启动(安卓系统是允许这种行为的,不然人家系统不算正常),此刻会增加运算负担内存读写,更耗电发热更多是肯定的,由于这些动作抢占了系统资源会增加系统卡顿的现象。
3.不一键清理会比一键清理手机更快。上面说APP接收消息要启动一个服务,那么使用过的APP会有更多进程在内存,本来系统是看内存准备不够再多启动一个(或者几个)APP时才把使用频率最低的APP占的干掉。结果你事先把一些APP干掉了,那等会你再用这个APP的时候,系统得从耗电更大速度慢很多很多的内存卡上面加载APP,这时候系统更慢耗电更大!不信可以试试打开一个APP然后退出APP再打开,和在内存里面干掉APP再打开的速度对比一下。
4.再看看人家苹果怎么做。苹果和安卓虽然系统性质差别大,内存机制往大了看都是一样的,都是按照APP使用频率和内存可用空间之间创建一个自动优化机制。但是苹果手机没有一键清理等说法,苹果手机多任务切换时也能干掉APP是为了防止APP卡bug崩溃什么的。原生安卓系统也是没有一键清理的,而且安卓因为用的是虚拟机机制,APP卡死会自动处理,这就是经常看到的“此APP无响应是否关闭”的原因。所以无论是苹果还是安卓,都不需要去一键清理内存。
4.安卓手机该怎么用?首先建议买魅族小米华为等定制系统的手机,因为这些手机有更符合中国国情更严格更智能的内存机制。什么叫中国国情?谷歌刚做安卓手机的时候肯定有想过不能那么耗电,因为谷歌觉得可以用谷歌商店审核APP有没有遵守设计规范。结果知道啦中国基本没人用谷歌商店安装APP,所以结果是中国的APP大部分没有遵守设计规范去限制APP的耗电情况等问题。中国这些做安卓APP的第一个就是为了赚钱,所以腾讯系阿里系百度系360系等等各系APP相互关联启动,比如你打开QQ,QQ后台给你打开QQ空间和一切有利益关系的APP。这就是为什么你打开一个APP会冒出别的APP的消息的原因。如果是苹果手机APP没有这种权限,所以安卓手机为什么要高性能。国内这些定制系统有切断APP相互唤醒的功能。欧美等国家用安卓手机的一般都用谷歌商店下载。所以谷歌商店上面的APP会规范得多。这就是为什么有些人装个国际版QQ感觉手机流程多了。
5.苹果手机为什么更省电更流畅也能从中得知。就是因为苹果手机不需要各种APP后台接收消息而且苹果手机的APP只能通过苹果商店获取所以APP设计得很规范而且苹果机型不多优化得更好。
上传的图片不符合要求
来自的祝福
网络异常,抽奖失败
(本次不消耗打开红包的次数)

我要回帖

更多关于 手机内存卡的读写速度 的文章

 

随机推荐