@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 都是一样操作,这里不写示例
总结
总体使用个人还是觉得简单高效,方便把,具体使用和改进,欢迎各位老哥大佬多提提意见。