问题
开发中,使用FileAccessHelper的move方法,当传数字、字母的uri时,移动成功;当传含有中文的uri时,移动失败,报14300001。
log日志如下:
传数字、字母uri=datashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/file
02-20 14:25:40.391 30473-30473/com.superred.filemanager E A01234/[FileManager-1.1.0.300]myPhone: move datashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/file
02-20 14:25:40.392 437-655/? I C01700/RSS: SocPerfPlugin: socperf->EVENT_CLICK: 2
02-20 14:25:40.395 30473-30473/com.superred.filemanager I C03900/Ace: [flutter_ace_view.cpp(operator())-(0)] Mark 0 id Touch Event Processed
02-20 14:25:40.396 30473-30473/com.superred.filemanager I A01234/[FileManager-1.1.0.300]FileAcce: move success:undefineddatashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/file -> datashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/move
传含中文的uri=datashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/file文件
02-20 14:30:12.131 30473-30473/com.superred.filemanager E A01234/[FileManager-1.1.0.300]myPhone: move datashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/file文件
02-20 14:30:12.131 30473-30489/com.superred.filemanager E C0430a/FileAccessFwk: [(Move:259)]fail to WriteParcelable sourceFile
02-20 14:30:12.131 30473-30489/com.superred.filemanager E C0430a/FileAccessFwk: [(Move:536)]Move get result error, code:14300001
02-20 14:30:12.131 994-2103/? I C02f01/ATMServ: [GetTokenType]:tokenID: 0x2806035f
02-20 14:30:12.131 994-2103/? I C02f01/ATMServ: [GetNativeTokenInfo]:tokenID: 0x2806035f
02-20 14:30:12.131 1008-1764/? I C02f01/ATMProxy: [GetNativeTokenInfo]:result from server data = 0
02-20 14:30:12.132 1008-1764/? I C0290a/PowerState: [device_state_action.cpp:62] GetDisplayState# Get display state: 2
02-20 14:30:12.132 1008-1764/? I C0290a/PowerState: [device_state_action.cpp:89] SetDisplayState# Action: SetDisplayState: 2, 1000
02-20 14:30:12.132 1008-1764/? I C0290a/PowerState: [device_state_action.cpp:62] GetDisplayState# Get display state: 2
02-20 14:30:12.132 1008-1764/? I C0290a/PowerState: [device_state_action.cpp:93] SetDisplayState# Already ins state: 2
02-20 14:30:12.132 437-1935/? I C01700/RSS: ResSchedService::ReportData from ipc receive data resType = 9:<private>, value = 2.
02-20 14:30:12.133 437-655/? I C01700/RSS: SocPerfPlugin: socperf->EVENT_CLICK: 2
02-20 14:30:12.133 1008-1764/? W C02800/TimeCostChk: in ~TimeCostChk, Time cost overtime (3372,(us)>300(us)) when Reason:ClientMsgHandler::OnMsgHandler,chk:overtime 300(us),param1:13,param2:0
02-20 14:30:12.135 30473-30473/com.superred.filemanager I C03900/Ace: [flutter_ace_view.cpp(operator())-(0)] Mark 0 id Touch Event Processed
02-20 14:30:12.136 30473-30473/com.superred.filemanager E A01234/[FileManager-1.1.0.300]FileAcce: move fail:{"code":14300001}datashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/file文件 -> datashare:///com.ohos.UserFile.ExternalFileManager/mnt/external/0033-4464/move
02-20 14:30:12.136 30473-30473/com.superred.filemanager E A01234/[FileManager-1.1.0.300]myPhone: move err: {"code":14300001}
环境
DevEco Studio 3.1.1 Release
OpenHarmony/SDK-full-3.2.14.2
API
move(sourceFile: string, destFile: string, callback: AsyncCallback<string>) : void
以异步方法移动文件(夹),返回移动后文件(夹)的uri。使用callback异步回调。目前仅支持设备内移动,跨设备不支持移动。
系统能力:SystemCapability.FileManagement.UserFileService
需要权限:ohos.permission.FILE_ACCESS_MANAGER
参数:
参数名 类型 必填 说明
sourceFile string 是 待移动的源文件(夹)的uri
destFile string 是 目标文件夹的uri
callback AsyncCallback<string> 是 新路径下的文件(夹)的uri
示例:
import { BusinessError } from '@ohos.base';
// 以内置存储目录为例
// 示例代码sourceFile destFile表示Download目录下文件和文件夹,该uri是对应的fileInfo中uri
// 开发者应根据自己实际获取的uri进行开发
let sourceFile: string = "file://docs/storage/Users/currentUser/Download/1.txt";
let destFile: string = "file://docs/storage/Users/currentUser/Download/test";
try {
// fileAccessHelper 参考 fileAccess.createFileAccessHelper 示例代码获取
fileAccessHelper.move(sourceFile, destFile, (err: BusinessError, fileUri: string) => {
if (err) {
console.error("Failed to move in async, errCode:" + err.code + ", errMessage:" + err.message);
}
console.log("move sucess, fileUri: " + JSON.stringify(fileUri));
});
} catch (err) {
let error: BusinessError = err as BusinessError;
console.error("move failed, errCode:" + error.code + ", errMessage:" + error.message);
}
错误码14300001
公共文件访问错误码
14300001 IPC通信失败
错误信息
IPC error
可能原因
1.server端服务不在。
2.extension机制异常。
处理步骤
检查server端服务是否存在。