记录安卓通过文件存取数据

举报
外围的小尘埃 发表于 2021/12/10 14:27:58 2021/12/10
【摘要】 记录安卓通过文件存取数据在项目中常遇到数据需要存到本地以备后用的情况,SQLite也可以使用但相比存文件稍显复杂,况且安卓本就是Linux内核,对文件操作更具优势。百度查了一下,文件操作数据与数据库操作数据在某些情况下是更好,废话不多说上代码。1、存数据:我是把要存的数据存到了.TXT文件中,当然也不拘泥于什么文件,目的是存进去的什么能取出什么Objecttry {File file = n...

记录安卓通过文件存取数据
在项目中常遇到数据需要存到本地以备后用的情况,SQLite也可以使用但相比存文件稍显复杂,况且安卓本就是Linux内核,对文件操作更具优势。百度查了一下,文件操作数据与数据库操作数据在某些情况下是更好,废话不多说上代码。

1、存数据:
我是把要存的数据存到了.TXT文件中,当然也不拘泥于什么文件,目的是存进去的什么能取出什么Object
try {
File file = new File(path + “.txt”);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream outputStream = new FileOutputStream(file);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(ObjectUtil.objectToString(obj));
//记得关闭资源
objectOutputStream.close()
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
此处的object2String方法,这是一个工具方法负责把存的数据转成了String
public static String objectToString(Object object) throws IOException {
if (object == null) throw new NullPointerException(“object can not be null”);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream;
objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(object);
String result = byteArrayOutputStream.toString(“ISO-8859-1”);
objectOutputStream.close();
byteArrayOutputStream.close();
return result;
}
好了第一步存数据就这样文件即path+".txt"
2、取数据:
虽然期间有一步转在字符串操作,实际操作中我们面对的数据是万物的,只是转成了字符串而已,为了可以更灵活使用,用了泛型算是一个精巧的轮子。

public static <T> T readFromLoacal(String path,T t) {
    T list = null;
    try {
        File file = new File(path + ".txt");
        if (!file.exists()) {
            file.createNewFile();
        }
        FileInputStream inputStream = new FileInputStream(file);//创建文件字节输出流对象
        ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
        String string = (String) objectInputStream.readObject();
        list = (T) ObjectUtil.stringToObject(string);

    } catch (Exception e) {
        e.printStackTrace();
    }
    return list;
}

    public static Object stringToObject(String str) throws Exception {
    if (str == null || str.equals("")) throw new NullPointerException("str can not be null ");
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(str.getBytes("ISO-8859-1"));
    ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
    Object object = objectInputStream.readObject();
    objectInputStream.close();
    byteArrayInputStream.close();
    return object;
}

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200