一个Android 通用方便快捷使用IO库

@TOC

前言

我们平时需要进行文件和文件夹的创建,写入文本,图片,xls表格文件,自己临时写代码略显繁琐,甚至不想写,还有SharedPreferences 定义缓存配置存储之类的,虽然已经有MMKV框架了,但这些在项目大一点的时候定义的key 很难管理,所以基于以上问题痛点,I-and-io 库诞生了


一、I-and-io是什么?

是一个方便我们开发者方便快捷高效,进行io操作读写文件的一个库

二、使用步骤

1.增加Maven仓库地址

代码如下(示例):

c 复制代码
        maven {
            url 'https://packages.aliyun.com/maven/repository/2386483-release-mhUqVd'
            credentials {
                username = "6166b8fa89e1d5005a9f5792"
                password = "W49P9mYH7aoH"
            }
        }

2.增加库依赖

c 复制代码
    implementation 'com.lyn:io:1.1.2'

3.文件创建读写操作代码实列

c 复制代码
        //创建test文件夹
        FolderFactory.create("test",filesDir.absolutePath)
        
        //获取test文件夹抽象实列
        val folder = FolderFactory.get("test")
        
        //创建hello.txt 并写入 hello world 文本内容
        folder?.writeFile("hello.txt","hello world")

        //读取文本文件 hello.txt内容
        val str = folder?.readFile("hello.txt")
        
        //将指定路径 "sdcard/gg.md" 文件写入到当前test文件夹下 相当于拷贝
        val fileInputStream = FileInputStream("sdcard/gg.md")
        folder?.writeFile(fileInputStream,"gg.md")
        
        //将bimap 写入到test 文件夹下
        val bitmap = BitmapFactory.decodeStream(assets.open("美女.jpg"))
        folder?.writeBitmap("美女.jpg",bitmap)
        //读取美女.jpg bitmap
        val bitmap = folder?.getBitmap("美女.jpg")

        //写入xls文件到test
        val list = mutableListOf<Person>()
        folder?.writeXls(name = "美女电话列表.xls",writeTitle = true, sheet = "0", sheetPosition = 0,list,Person::class.java)

        //读取test文件夹下的xls文件
        val list = folder?.readXls("美女电话列表.xls", curClass = Person::class.java)

4.SharedPreferences 使用

定义 Key 单例静态类,方便统一管理key

c 复制代码
object SpKey {

    @SpString(defaultValue = "0", description = "主页设备1")
    const val HOME_DEVICE_1 = "homeDevice1"

    @SpString(defaultValue = "0", description = "主页设备2")
    const val HOME_DEVICE_2 = "homeDevice2"

    @SpString(defaultValue = "0", description = "主页设备3")
    const val HOME_DEVICE_3 = "homeDevice3"

    @SpString(defaultValue = "0", description = "主页设备4")
    const val HOME_DEVICE_4 = "homeDevice4"
}    

初始化创建

c 复制代码
        //推荐使用mmkv 传入SharedPreferences 因为mmkv 实现了 SharedPreferences 接口
        SpFactory.create(MMKV.defaultMMKV(), defaultT = SpKey::class)
        //使用原生SharedPreferences
        SpFactory.create(applicationContext,defaultT = SpKey::class)
        val sp = SpFactory.get()
        sp?.setString(SpKey.HOME_DEVICE_1,"123")
        val str = sp?.getString(SpKey.HOME_DEVICE_1)
        // int float long 都是一样操作,这里不写示例

总结

总体使用个人还是觉得简单高效,方便把,具体使用和改进,欢迎各位老哥大佬多提提意见。

相关推荐
梓仁沐白7 分钟前
Android清单文件
android
董可伦2 小时前
Dinky 安装部署并配置提交 Flink Yarn 任务
android·adb·flink
每次的天空3 小时前
Android学习总结之Glide自定义三级缓存(面试篇)
android·学习·glide
恋猫de小郭3 小时前
如何查看项目是否支持最新 Android 16K Page Size 一文汇总
android·开发语言·javascript·kotlin
flying robot5 小时前
小结:Android系统架构
android·系统架构
xiaogai_gai5 小时前
有效的聚水潭数据集成到MySQL案例
android·数据库·mysql
鹅鹅鹅呢6 小时前
mysql 登录报错:ERROR 1045(28000):Access denied for user ‘root‘@‘localhost‘ (using password Yes)
android·数据库·mysql
在人间负债^6 小时前
假装自己是个小白 ---- 重新认识MySQL
android·数据库·mysql
Unity官方开发者社区6 小时前
Android App View——团结引擎车机版实现安卓应用原生嵌入 3D 开发场景
android·3d·团结引擎1.5·团结引擎车机版
进击的CJR9 小时前
MySQL 8.0 OCP 英文题库解析(三)
android·mysql·开闭原则