• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android开发学习——android存储,android开发存储

Android开发学习——android存储,android开发存储

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了Android开发学习——android存储,android开发存储等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android开发学习——android存储,android开发存储


Android的存储


内部存储空间
RAM内存:运行内存,相当于电脑的内存
ROM内存:存储内存,相当于电脑的硬盘
外部存储空间
 SD卡:相当于电脑的移动硬盘
    * 2.2之前,sd卡路径:sdcard
    * 4.3之前,sd卡路径:mnt/sdcard
    * 4.3开始,sd卡路径:storage/sdcard

* 所有存储设备,都会被划分成若干个区块,每个区块有固定的大小
* 存储设备的总大小 = 区块大小 * 区块数量


文件访问权限
* 指的是谁能访问这个文件
* 在Android中,每一个应用,都是一个独立的用户
* 使用10个字母表示  drwxrwxrwx
* 第一个字母:
    * d:表示文件夹
    * -:表示文件
* 第一组rwx:表示的是文件拥有者(owner)对文件的权限
    * r:read,读
    * w:write
    * x:execute
* 第二组rwx:表示的是跟文件拥有者属于同一用户组的用户(grouper)对文件的权限
* 第三组rwx:表示的其他用户(other)对文件的权限

在内部存储空间中读写文件

小案例:用户输入账号密码,勾选“记住账号密码”,点击登录按钮,登录的同时持久化保存账号和密码

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/et1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="用户名:" />
    
    <EditText
        android:id="@+id/et2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="密   码:" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="记住用户名和密码" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="login"
        android:text="登     录" />

</LinearLayout>
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


   public void login(View v){
       EditText et1 = (EditText) findViewById(R.id.et1);
       EditText et2 = (EditText) findViewById(R.id.et2);
       
       String username = et1.getText().toString();
       String pwd = et2.getText().toString();
       // 判断用户是否勾选保存账号密码
       CheckBox cb = (CheckBox) findViewById(R.id.checkBox1);
       if(cb.isChecked()){
           //将用户名和密码写到本地文件,用IO流来写
           File file = new File("data/data/com.example.cunchu/info.txt");//内部存储空间的路径
           FileOutputStream fos;
        try {
            fos = new FileOutputStream(file);
            fos.write((username+"####"+pwd).getBytes());
            fos.close();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          
       }
       System.out.print("登录成功!!!");
       Toast.makeText(this,"登录成功!!!", Toast.LENGTH_SHORT).show();
   }
    
}

public void read(){
        try {
            FileInputStream  fis = new FileInputStream("data/data/com.example.cunchu/info.txt");
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));
            String text = br.readLine();
            String []s = text.split("####");
            EditText et1 = (EditText) findViewById(R.id.et1);
            EditText et2 = (EditText) findViewById(R.id.et2);
//读取到数据之后,回显至输入框 et1.setText(s[0]); et2.setText(s[1]); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }

运行结果:

 

使用路径api读写文件
getFilesDir()得到的file对象的路径是data/data/com.itheima.rwinrom2/files
    * 存放在这个路径下的文件,只要你不删,它就一直在
getCacheDir()得到的file对象的路径是data/data/com.itheima.rwinrom2/cache
    * 存放在这个路径下的文件,当内存不足时,有可能被删除

系统管理应用界面的清除缓存,会清除cache文件夹下的东西,清除数据,会清除整个包名目录下的东西

如果有时需要直接复制项目
需要改动的地方:
    * 项目名字
    * 应用包名
    * R文件重新导包

 

在外部存储空间中读写文件

   在内部存储读写和外部存储 读写 文件,都是用IO流读写,不同的是,路径不同。

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android开发学习——android存储,android开发存储

相关文章

  • 2017-05-26一次奇怪的MySQL复制故障
  • 2017-05-26编译器开发系列--Ocelot语言7.中间代码,编译器--ocelot
  • 2017-05-26【新建项目&amp;使用viewPager】实现一个Android电子书阅读APP,新建项目定义
  • 2017-05-26android:使用gallery和imageSwitch制作可左右循环滑动的图片浏览器
  • 2017-05-26阅读《Android 从入门到精通》(29)——LinearLayout 等四类方法
  • 2017-05-26Andriod中自定义Dialog样式的Activity点击空白处隐藏软件盘(Dialog不消失),andrioddialog
  • 2017-05-26计算facebook sdk需要的key hashes,facebookhashes
  • 2017-05-26Kotlin的Lambda表达式以及它们怎样简化Android开发(KAD 07),kotlinlambda
  • 2017-05-26android 所有焦点问题--Focus,android--focus
  • 2017-05-26Apk去掉签名以及重新签名的方法,apk去掉签名

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android中TextView、EditText对部分内容设置不同格式(颜色、字体、超链接、图片。。)
    • Android官方开发文档Training系列课程中文版:数据存储之文件存储
    • ionic 配置环境变量及创建新项目,ionic新项目
    • Android入门——Drawable与对应的资源xml的应用
    • android:Activity数据传递之基本数据类型
    • 对YUV数据进行裁剪,YUV数据进行裁剪
    • 安卓开源项目周报0222,安卓开源项目0222
    • Android Bottom Sheet详解
    • 7.3.3 Android 文件下载(2)
    • PopupWindow的使用,PopupWindow使用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有