Android Kotlin 文件读写操作扩展函数,Raw资源读取,Assets资源读取

1、保存内容到文件及文件读取
/**
 * 保存信息到File
 * @param fileName 文件名
 * @param content 保存内容
 * @param mode 模式
 */
fun Context.saveIntoFile(
    fileName: String,
    content: String,
    mode: Int = Context.MODE_PRIVATE
): Boolean {
    return try {
        openFileOutput(fileName, mode).use {
            it.write(content.toByteArray())
            true
        }
    } catch (e: Exception) {
        false
    }
}
/**
 * 读取文件
 * @param fileName 文件名
 */
fun Context.readFromFile(fileName: String): String {
    val sb = StringBuilder()
    openFileInput(fileName).use {
        val temp = ByteArray(1024)
        var len = 0
        while (true) {
            len = it.read(temp)
            if (len <= 0) break
            sb.append(String(temp, 0, len))
        }
    }
    return sb.toString()
}

在Activity中使用

//保存
saveIntoFile(FILE_NAME, content)
//读取
val content = readFromFile(FILE_NAME)
2、保存内容到SD卡中的文件及SD卡文件读取
/**
 * 写文件到SD卡
 * eg:/storage/emulated/0/Android/data/com.guc.androiddemo/files/Documents/fileName
 * @param fileName 文件名
 * @param content 内容
 * @param type 文件类型
 *            {@link android.os.Environment#DIRECTORY_MUSIC},
 *            {@link android.os.Environment#DIRECTORY_PODCASTS},
 *            {@link android.os.Environment#DIRECTORY_RINGTONES},
 *            {@link android.os.Environment#DIRECTORY_ALARMS},
 *            {@link android.os.Environment#DIRECTORY_NOTIFICATIONS},
 *            {@link android.os.Environment#DIRECTORY_PICTURES}, or
 *            {@link android.os.Environment#DIRECTORY_MOVIES}.
 */
fun Context.saveFileToSD(
    fileName: String,
    content: String,
    type: String = Environment.DIRECTORY_DOCUMENTS
) {
    if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
        val fn = getExternalFilesDir(type)?.canonicalPath + "/" + fileName
        FileOutputStream(fn).use {
            it.write(content.toByteArray())
        }

    } else {
        throw Exception("没有存储卡")
    }
}

/**
 * 读取SD中文件
 * eg:/storage/emulated/0/Android/data/com.guc.androiddemo/files/Documents/fileName
 * @param fileName 文件名
 * @param type 文件类型-Documents
 */
fun Context.readFromSD(
    fileName: String,
    type: String = Environment.DIRECTORY_DOCUMENTS
): String {
    return if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
        val sb = StringBuilder()
        val fn = getExternalFilesDir(type)?.canonicalPath + "/" + fileName
        FileInputStream(fn).use {
            val temp = ByteArray(1024)
            var len = 0
            while (true) {
                len = it.read(temp)
                if (len <= 0) break
                sb.append(String(temp, 0, len))
            }
        }
        sb.toString()
    } else {
        throw Exception("没有存储卡")
    }
}

Activity中使用

//保存
saveFileToSD(FILE_NAME, content)
//读取
val content = readFromSD(FILE_NAME)

3、读取Raw文件
/**
 * 读取Raw文件中的内容
 * @param rawId Raw文件ID:R.id.info
 */
fun Context.readRaw(rawId: Int): String {
    return BufferedReader(InputStreamReader(resources.openRawResource(rawId))).use {
        val sb = StringBuilder()
        it.forEachLine { s ->
            sb.append(s)
        }
        sb.toString()
    }
}
4、读取Assets文件
/**
 * 读取Raw文件中的内容
 * @param rawId Raw文件ID:R.id.info
 */
fun Context.readRaw(rawId: Int): String {
    return BufferedReader(InputStreamReader(resources.openRawResource(rawId))).use {
        val sb = StringBuilder()
        it.forEachLine { s ->
            sb.append(s)
        }
        sb.toString()
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值