文件存储

文件存储可以在不同存储环境对应的目录下存储文件,并且提供了文件加解密读写的工具类。

使用文件存储

类似数据库和键值对存储,文件存储也可以通过对应的存储环境获取操作实例。

// 获取全局存储环境下的文件访问接口
TMFFile fileStorage = TMFStorage.getDefault().file();

通过 TMFFile 可以获取对应环境下的文件存储路径。

// 获取全局存储环境下 App 内部存储的文件,传入的参数为文件相对路径
File internalFile = fileStorage.getInternalFile("file_storage_demo");

// 获取全局存储环境下 SD 卡存储的文件,传入的参数为文件相对路径
File ExternalFile = fileStorage.getExternalFile("file_storage_demo");

文件加解密存储

统一存储组件提供了 TMFEncryptedInputStream 和 TMFEncryptedOutputStream 来进行文件的加解密读写操作,其使用方式类似 FileInputStream 以及 FileOutputStream。

// 加密写入文件
File internalFile = fileStorage.getInternalFile("file_storage_demo");
String data = "test";
String key = "12345";
TMFFileOutputStream outStream = null;
try {
    outStream = new TMFEncryptedOutputStream(
            internalFile,                       // 要写入的 File
            key.getBytes(),                     // 写入文件的密钥
            TMFCipher.AlgorithmType.AES128);    // 加密算法,如果传 null 默认为 AES128

    outStream.write(data.getBytes());
} catch (Exception e) {
     e.printStackTrace();
} finally {
    FileUtils.closeQuietly(outStream);
}

// 解密读取文件
File internalFile = fileStorage.getInternalFile("file_storage_demo");
String key = "12345";
TMFFileInputStream inStream = null;
ByteArrayOutputStream outStream = null;
try {
    inStream = new TMFEncryptedInputStream(
            internalFile,                       // 要读取的 File
            key.getBytes(),                     // 读取文件的密钥
            TMFCipher.AlgorithmType.AES128);    // 加密算法,如果传 null 默认为 AES128
    outStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int len = 0;
    while ((len = inStream.read(buffer)) != -1) {
        outStream.write(buffer, 0, len);
    }
} catch (Exception e) {
     e.printStackTrace();
} finally {
    FileUtils.closeQuietly(inStream);
    FileUtils.closeQuietly(outStream);
}

您也可以使用 FileUtils 工具类方便地读写加密文件。

File internalFile = fileStorage.getInternalFile("file_storage_demo");
String data = "test";
String key = "12345";

// 加密写入文件
boolean result = FileUtils.writeFileEncrypted(data.getBytes(), internalFile,
        key.getBytes(), TMFCipher.getsDefaultAlgorithmType());

// 解密读取文件
byte[] output = FileUtils.readFileEncrypted(internalFile, key.getBytes(),
                    TMFCipher.getsDefaultAlgorithmType());

注意 注意:文件操作相对耗时,可能会引起线程阻塞,在UI线程读写文件时需要考虑性能问题。

Copyright © 2013-2023 Tencent Cloud. all right reserved,powered by GitbookUpdate Time 2023-08-31 14:46:07

results matching ""

    No results matching ""