Libgdx之数据保存 和 数据加密
来源:互联网 发布:2015十大网络用语 编辑:程序博客网 时间:2024/06/01 10:12
Libgdx 中使用Preference以哈希表的形式进行数据的保存,在桌面版保存在目录”.prefs”下面,注意所有桌面的Preference都保存在.prefs目录下,所以文件名最好以”com.myname.game1.settings”而不是”Settings”
只有调用方法flush才会将数据从内存保存到磁盘上
Gdx.app.getPreferences(String filename)来创建Preference实例
public boolean contains (String key);
public void clear ();
public void remove (String key);
/* Makes sure the preferences are persisted. /
public void flush ();
这样保存数据是明文保存的,有时候我们需要加密数据,不想任何人都可以看到和修改,这时我们需要使用Base64Coder来进行加密。
现在我们先看Preferences进行数据保存的代码,之后再看加密的代码
Preferences保存数据
public class PreferenceTest extends ApplicationAdapter { Preferences pre; SpriteBatch sb; BitmapFont bf; @Override public void create() { pre = Gdx.app.getPreferences("PreferenceTest"); pre.putBoolean("IsBool", true); pre.putInteger("IsInt", 2); pre.putString("IsString", "Libgdx"); pre.flush(); sb = new SpriteBatch(); bf = new BitmapFont(); } @Override public void render() { Gdx.gl.glClearColor(0.39f, 0.58f, 0.92f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); sb.begin(); bf.draw(sb, "IsBoole=" + pre.getBoolean("IsBool") + " IsInt=" + pre.getInteger("IsInt") + " IsString=" + pre.getString("IsString"), 40, 40); sb.end(); } @Override public void dispose() { sb.dispose(); bf.dispose(); }}
使用Base64Coder加密操作的代码,示例比较简单,首先需要一个辅助类-DataSaveSecurity-来加密解密数据,
public class DataSaveSecurity { private Save save; private FileHandle file = Gdx.files.local("bin/scores.json"); public DataSaveSecurity() { save = getSave(); } private Save getSave() { Save save = new Save(); if (file.exists()) { Json json = new Json(); // 读取文件,并且解密 save = json.fromJson(Save.class, Base64Coder.decodeString(file.readString())); } return save; } public void saveToJson() { Json json = new Json(); json.setOutputType(OutputType.json); file.writeString(Base64Coder.encodeString(json.prettyPrint(save)), false); } public void saveDataValue(String key, Object object){ save.data.put(key, object); saveToJson(); // 立即保存数据 } public Integer loadDataValue(String key, Class<Integer> type){ // 如果包含key的数据则返回数据,否则返回null if(save.data.containsKey(key)) return (Integer) save.data.get(key); else return null; } /** 根据需要T替换要读取的类型 * public <T> T loadDataValue(String key, Class type){ if(save.data.containsKey(key))return (T) save.data.get(key); else return null; //this if() avoids exception, but check for null on load. } */ private static class Save { public ObjectMap<String, Object> data = new ObjectMap<String, Object>(); }}
之后是对数据的操作
public class DataSecurityTest extends ApplicationAdapter { SpriteBatch sb; BitmapFont bf; DataSaveSecurity dataSaveSecurity; @Override public void create() { sb = new SpriteBatch(); bf = new BitmapFont(); dataSaveSecurity = new DataSaveSecurity(); for (int i = 0; i < 3; i++) { dataSaveSecurity.saveDataValue("data"+i, 100+i); } } @Override public void render() { Gdx.gl.glClearColor(0.39f, 0.58f, 0.92f, 1.0f); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); sb.begin(); bf.draw(sb, ""+dataSaveSecurity.loadDataValue("data0", Integer.class), 40, 40); bf.draw(sb, ""+dataSaveSecurity.loadDataValue("data1", Integer.class), 40, 80); bf.draw(sb, ""+dataSaveSecurity.loadDataValue("data2", Integer.class), 40, 120); sb.end(); } @Override public void dispose() { sb.dispose(); bf.dispose(); }}
1 0
- Libgdx之数据保存 和 数据加密
- 数据加密与保存
- Unity 数据保存加密
- 保存数据 之 保存文件
- Java 数据保存与读取,保存数据信息并加密
- cocos2d之数据保存
- 数据保存之SharedPreferance
- SparkSQL之保存数据
- iOS之数据加密
- 数据加密和解密
- 数据加密和解密
- 数据加密和解密
- 数据加密和解密
- IOS数据加密保存的方法
- Libgdx 之资源加密保护
- libGDX引擎之存入数据到keychain(IOS)
- IOS保存对象数据方法之--文件保存和SQLite保存
- Android数据保存之文件保存
- 禁止表单回车事件
- 工作总结
- 剑指offer系列-从尾到头打印链表
- Const用法小结
- vc dll编程
- Libgdx之数据保存 和 数据加密
- 支持向量机学习笔记
- C/C++头文件一览
- LibeventBook 节选翻译
- session入mysql
- koa学习2——koa入门
- 利用docker开启持续交付之路
- Coin Change
- HIVE配置文件