package com.remax.visualnovel.extension

import android.content.Context
import android.os.Environment
import timber.log.Timber
import java.io.File
import java.io.FileInputStream
import java.util.Base64

/**
 * Created by HJW on 2025/8/21
 */
/**
 * 将文件转换为 Base64 字符串
 * @return Base64 编码的字符串
 * @throws IOException 如果读取文件失败
 */
fun File.toBase64(): String {
    // 检查文件是否存在
    if (!this.exists() || !this.isFile) {
        Timber.e("File.toBase64() File does not exist or is not a valid file")
        return ""
    }

    // 使用 FileInputStream 读取文件内容
    return FileInputStream(this).use { inputStream ->
        // 创建缓冲区，优化大文件读取
        val buffer = ByteArray(8192)
        val byteArrayOutputStream = java.io.ByteArrayOutputStream()
        var bytesRead: Int

        // 流式读取文件
        while (inputStream.read(buffer).also { bytesRead = it } != -1) {
            byteArrayOutputStream.write(buffer, 0, bytesRead)
        }

        // 转换为 Base64 字符串
        Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray())
    }
}

