存储

news/2024/11/24 8:33:41/

存储

    • 一、SharedPreferences
      • 1.存储数据
      • 2.获取数据
    • 二、文件存储 内部存储+SD卡存储
    • 三、SD卡存储
    • 四、SD卡读取
    • 五、三级存储
      • 1.网络获取
      • 2.SD卡读取与写入
      • 3.内存的获取与写入
      • 3.主类中判断

一、SharedPreferences

1.存储数据

步骤1:得到SharedPreferences对象 getSharedPreferences(“文件的名称”,“文件的类型”);
(1).Context.MODE_PRIVATE:指定该SharedPreferences数据只能被应用程序读写
(2).Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写。
(3).Context,MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序写,但不能读。
步骤2:得到 SharedPreferences.Editor编辑对象
SharedPreferences.Editor editor=sp.edit();
步骤3:添加数据 
editor.putBoolean(key,value)
editor.putString()
editor.putInt() 
editor.putFloat()
editor.putLong()
步骤4:提交数据 editor.commit()
    private void write() {//TODO  1:得到SharedPreferences对象//参数一 xml文件的名字 参数二 模式 MODE_PRIVATE 指定该SharedPreferences数据只能被本应用程序读写SharedPreferences preferences = getSharedPreferences("songdingxing", MODE_PRIVATE);//TODO 2:获得编辑对象SharedPreferences.Editor editor = preferences.edit();//TODO 3:写数据editor.putString("username","送定型");editor.putInt("age",18);editor.putBoolean("isMan",false);editor.putFloat("price",12.4f);editor.putLong("id",5425054250l);//TODO 4:提交数据editor.commit();}

2.获取数据

步骤1:得到SharedPreferences对象 getSharedPreferences(“文件的名称”,“文件的类型”);
步骤2:读取数据 String msg = sp.getString(key,defValue);
    private void read() {//TODO  1:得到SharedPreferences对象//参数一 xml文件的名字 参数二 模式 MODE_PRIVATE 指定该SharedPreferences数据只能被本应用程序读写SharedPreferences preferences = getSharedPreferences("songdingxing", MODE_PRIVATE);//TODO 2:直接读取//参数一 键  参数二 找不到的时候给默认值String username=preferences.getString("username","");int age=preferences.getInt("age",0);boolean isMan=preferences.getBoolean("isMan",false);float price=preferences.getFloat("price",0.0f);long id=preferences.getLong("id",0l);Toast.makeText(this, username+":"+age+":"+isMan+":"+price+":"+id, Toast.LENGTH_SHORT).show();}

二、文件存储 内部存储+SD卡存储

在这里插入图片描述

三、SD卡存储

    public static void write_json(String json)  {//判断是否挂载if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){//获取SD卡根路径:mnt/shell/emulated/0File file=Environment.getExternalStorageDirectory();FileOutputStream fos=null;try {//创建输出流fos= new FileOutputStream(new File(file,"json.txt"));fos.write(json.getBytes());} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}

四、SD卡读取

   public static String read_json() {if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {File file = Environment.getExternalStorageDirectory();FileInputStream fis= null;StringBuffer sb=new StringBuffer();try {fis=new FileInputStream(new File(file,"json.txt"));byte[] b=new byte[1024];int len=0;while((len=fis.read(b))!=-1){sb.append(new String(b,0,len));}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}finally{try {fis.close();} catch (IOException e) {e.printStackTrace();}}return  sb.toString();}else{return "";}}

五、三级存储

1.网络获取

public static byte[] getPicByte(String url){byte[] returnByte = null;try {URL url1 = new URL(url);HttpURLConnection urlconn = (HttpURLConnection) url1.openConnection();urlconn.setRequestMethod("GET");urlconn.connect();if(urlconn.getResponseCode()==200){InputStream is = urlconn.getInputStream();ByteArrayOutputStream bos = new ByteArrayOutputStream();int len=-1;byte[] bytes = new byte[1024];while((len=is.read(bytes))!=-1){bos.write(bytes,0,len);}returnByte = bos.toByteArray();}} catch (Exception e) {e.printStackTrace();}return  returnByte;}

2.SD卡读取与写入

//读取public static File getDatas(){if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){File path = Environment.getExternalStorageDirectory();File file = new File(path,"abc.jpg");if(file.exists()){return file;}else{return null;}}return null;}
//写入public static void writeDatas(byte[] b){FileOutputStream fos=null;if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){File path = Environment.getExternalStorageDirectory();File file = new File(path,"abc.jpg");try {file.createNewFile();fos = new  FileOutputStream(file);fos.write(b);} catch (Exception e) {e.printStackTrace();}finally {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}}

3.内存的获取与写入

    LruCache<String,Object> lruCache;public CacheTools(){int maxMemory = (int) Runtime.getRuntime().maxMemory();lruCache = new LruCache<String,Object>(maxMemory/8){@Overrideprotected int sizeOf(String key, Object value) {return super.sizeOf(key, value);}};}
//写入public void addDatas(String k,Object v){if(lruCache.get(k)==null){lruCache.put(k,v);}}
//读取public Object reaDatas(String k){return lruCache.get(k);}

3.主类中判断

private void getPicture() {Bitmap tutu = (Bitmap) cacheTools.reaDatas("图图");Log.e("###lruCache", String.valueOf(tutu));if(tutu!=null){imageView.setImageBitmap(tutu);Log.e("###111","通过内存");}else{File file = SDCardTools.getDatas();if(file!=null){Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());imageView.setImageBitmap(bitmap);cacheTools.addDatas("图图",bitmap);Log.e("###111","通过SD");}else{try {byte[] b = new MyAscyncTask().execute("http://www.qubaobei.com/ios/cf/uploadfile/132/9/8289.jpg").get();if(b.length>0){Bitmap bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);cacheTools.addDatas("图图",bitmap);imageView.setImageBitmap(bitmap);SDCardTools.writeDatas(b);Log.e("###111","通过网络");}} catch (Exception e) {e.printStackTrace();}}}}

http://www.ppmy.cn/news/475475.html

相关文章

SAN存储技术简介

一、存储方式分类 二、SAN存储 三、组网的方式 四、SAN组成部分 五、FC-SAN架构 FC协议栈 实际应用中更多的是应用FC0\FC1\FC2这三层。 FC三种拓扑结构 六、IP-SAN架构 连接形式 第三中是通常用的最多的方式。 七、FC-SAN和IP-SAN的区别

项目整体管理知识点

项目整体管理知识点 十大知识领域 基准计划 范围管理、进度管理、成本管理、质量管理 资源的协调、优化配置 人力资源管理、沟通管理、干系人管理、采购管理 防范于未然和应变 风险管理 一致性和完整性 整体管理 1.基本理解 项目整体管理是对项目管理过程组中的不同…

自适应端在线玩俄罗斯方块源码开源版源码

简介: 俄罗斯方块是一直各类程序语言热衷实现的经典游戏&#xff0c;JavaScript的实现版本也有很多&#xff0c;用React 做好俄罗斯方块则成了我一个目标。 响应式 不仅指屏幕的自适应&#xff0c;而是在PC使用键盘、在手机使用手指的响应式操作&#xff1a; 数据持久化 玩单机…

java开发的俄罗斯方块小游戏,可下载,2021-06-22

java开发的俄罗斯方块小游戏&#xff0c;可下载 文章目录 java开发的俄罗斯方块小游戏&#xff0c;可下载游戏操作介绍游戏压缩包下载 最近在老师要求下组队&#xff0c;一起使用eclipse编写了Java游戏代码&#xff0c;导入sqlite所需的jar包&#xff0c;使用sqlite数据库嵌套进…

俄罗斯方块项目(c#)第二天

今天对项目中的yix一些功能具体分析&#xff1a; 1.俄罗斯方块项目需求调研&#xff1a;1.这是一个单机游戏。2.友好的界面&#xff0c;界面包括方块落下和消失的&#xff0c;计分面板&#xff0c;时间面板&#xff0c;下一个方块样式&#xff0c;以及难易度的选择3.游戏开始&a…

游戏制作第五棒——俄罗斯方块

很久以前就打算做俄罗斯方块&#xff0c;这次终于做成功了&#xff0c;界面不是很好看&#xff0c;现在的技术也就只能到这里了。 一下是重要的部分代码 方块类 #pragma once class FangKuai { private: int x; int y; int Style; int direct; int color; public: //是否停止 …

结对项目—第一次作业(俄罗斯方块)

【项目俄罗斯方块】需求分析、原型模型 【软件工程实践结队项目】 第一次作业 Part 0 简要目录 Part 1 结队信息Part 2 NABCD模型Part 3 原型设计Part 4 PSP 表格Part 5 结对过程Part 6 心得总结 Part 1 结队信息 成员列表 成员一&#xff1a;叶伟龙&#xff0c;3013 成…

H5版俄罗斯方块(4)---火拼对战的雏形

前言:   勿忘初心, 本系列的目标是实现一款类似QQ"火拼系列"的人机对战版俄罗斯方块. 在完成了基本游戏框架和AI的算法探索后, 让我们来尝试一下人机大战雏形编写.   本系列的文章链接如下:  1). 需求分析和目标创新   2). 游戏的基本框架和实现   3). 游…