|
|
|
/*
|
|
|
|
* ====================================================
|
|
|
|
* package :
|
|
|
|
* author : Created by nansi.
|
|
|
|
* time : 2019-07-16 15:21
|
|
|
|
* remark :
|
|
|
|
* ====================================================
|
|
|
|
*/
|
|
|
|
|
|
|
|
import 'dart:io';
|
|
|
|
|
|
|
|
import 'package:path_provider/path_provider.dart';
|
|
|
|
|
|
|
|
typedef ReadFileCallback = Function(bool success, File file, String msg);
|
|
|
|
typedef WriteFileCallback = Function(bool success, File file, String msg);
|
|
|
|
|
|
|
|
class FileOperationResult {
|
|
|
|
Object? data;
|
|
|
|
String msg;
|
|
|
|
bool success;
|
|
|
|
|
|
|
|
FileOperationResult(this.data, this.msg, this.success);
|
|
|
|
}
|
|
|
|
|
|
|
|
class FileUtils {
|
|
|
|
static Future<String> tempPath() async {
|
|
|
|
try {
|
|
|
|
var tempDir = await getTemporaryDirectory();
|
|
|
|
String tempPath = tempDir.path;
|
|
|
|
return tempPath;
|
|
|
|
} catch (err) {
|
|
|
|
print(err);
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static Future<String> appDocPath() async {
|
|
|
|
try {
|
|
|
|
var appDocDir = await getApplicationDocumentsDirectory();
|
|
|
|
String appDocPath = appDocDir.path;
|
|
|
|
return appDocPath;
|
|
|
|
} catch (err) {
|
|
|
|
print(err);
|
|
|
|
return '';
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 读取 json 数据
|
|
|
|
static Future<FileOperationResult> readJSON(String path) async {
|
|
|
|
try {
|
|
|
|
String filePath = await appDocPath();
|
|
|
|
final File file = await localFile(filePath + path);
|
|
|
|
String str = await file.readAsString();
|
|
|
|
return FileOperationResult(str, "读取成功", true);
|
|
|
|
} catch (err) {
|
|
|
|
return FileOperationResult(null, err.toString(), false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 写入 json 数据
|
|
|
|
static Future<FileOperationResult> writeJSON(
|
|
|
|
String path, String jsonStr) async {
|
|
|
|
try {
|
|
|
|
String filePath = await appDocPath();
|
|
|
|
final File file = await localFile(filePath + path);
|
|
|
|
await file.writeAsString(jsonStr);
|
|
|
|
return FileOperationResult(file, "写入成功", true);
|
|
|
|
} catch (err) {
|
|
|
|
return FileOperationResult(null, err.toString(), false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static localFile(path) async {
|
|
|
|
print('文件目录: ' + path);
|
|
|
|
return new File(path);
|
|
|
|
}
|
|
|
|
}
|