文件相关

关于文件的部分工具,具体表现为以下顶级或扩展函数:

/**
 * 声明一个文件
 *
 * @param file 所属文件
 * @param path 文件路径
 * @param create 若文件不存在是否新建(默认为是)
 * @param folder 该文件是否为文件夹(默认为否)
 * @return 该文件自身
 */
fun newFile(file: File, path: String, create: Boolean = true, folder: Boolean = false): File

/**
 * 声明一个文件
 *
 * @param path 文件路径
 * @param create 若文件不存在是否新建(默认为是)
 * @param folder 该文件是否为文件夹(默认为否)
 * @return 该文件自身
 */
fun newFile(path: String, create: Boolean = true, folder: Boolean = false): File

/**
 * 声明一个文件
 *
 * @param file 文件
 * @param create 若文件不存在是否新建(默认为是)
 * @param folder 该文件是否为文件夹(默认为否)
 * @return 该文件自身
 */
fun newFile(file: File, create: Boolean = true, folder: Boolean = false): File

/**
 * 删除特定文件夹下的所有子文件
 */
fun File.deepDelete()

/**
 * 复制文件或文件夹
 * 若目标为文件夹则复制其所有子文件
 */
fun File.deepCopyTo(target: File)

/**
 * 取字符串的数字签名
 * @param algorithm 算法类型(可使用:md5, sha-1, sha-256 等)
 */
fun String.digest(algorithm: String): String

/**
 * 取文件的数字签名
 * @param algorithm 算法类型(可使用:md5, sha-1, sha-256 等)
 */
fun File.digest(algorithm: String): String

/**
 * 压缩文件
 * @param target 压缩后的文件
 * @param skipParent 是否跳过该文件,从子文件开始压缩
 */
fun File.zip(target: File, skipParent: Boolean = false)

/**
 * 解压文件
 * @param target 解压后的文件
 */
fun File.unzip(target: File)

/**
 * 解压文件
 * @param destDirPath 解压后的文件路径
 */
fun File.unzip(destDirPath: String)

/**
 * 使用 GZIP 算法压缩字节
 */
fun ByteArray.zip(): ByteArray

/**
 * 使用 GZIP 算法解压字节
 */
fun ByteArray.unzip(): ByteArray