HarmonyOS 鸿蒙Next请问为什么这段代码一直没办法创建文件,怎么解决?
HarmonyOS 鸿蒙Next请问为什么这段代码一直没办法创建文件,怎么解决?
function createFile(): void {
console.log(filesDir)
let file = fs.openSync(filesDir + ‘/test.txt’, fs.OpenMode.READ_WRITE|fs.OpenMode.CREATE);
let isWritten:boolean=false
let writeLen = fs.writeSync(file.fd, “Try to write str.”);
console.info("The length of str is: " + writeLen);
let arrayBuffer = new ArrayBuffer(1024);
let readOptions: ReadOptions = {
offset: 0,
length: arrayBuffer.byteLength
};
let readLen = fs.readSync(file.fd, arrayBuffer, readOptions);
let buf = buffer.from(arrayBuffer, 0, readLen);
console.info("the content of file: " + buf.toString());
isWritten=true
fs.closeSync(file);
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
关于HarmonyOS 鸿蒙Next请问为什么这段代码一直没办法创建文件,怎么解决?的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。
楼主您好,你的filesDir是要为沙箱路径的。需要先通过context获取到沙箱路径后再进行使用。可以参考如下代码。
let context = getContext(this) as common.UIAbilityContext;
let filesDir = context.filesDir;
let file = fs.openSync(photoUri, fs.OpenMode.CREATE); 这一步直接报错Operation not permitted
HarmonyOS的开发者模式提供了很多实用的工具,方便我们进行调试和优化。
我也遇到这个问题
我这边已经可以了,openmode权限后面加读写权限
let file = fs.openSync(filesDir + ‘/test.txt’, fs.OpenMode.READ_WRITE|fs.OpenMode.CREATE) 有啊
我没说清楚 是fileDir 这个你的文件路径是哪个
可以搜一下安全组件,savebutton这个组件,不需要获取权限即可做你想要的操作了
啊这···我只需要保存数据,媒体控件没用啊
不能直接在公共区域创建文件,先创建在沙箱,在保存至公共区域
有可能。我的理解。是错误的。可以参考下。你可能需要在应用的配置文件config.json
中添加相应的权限声明。具体来说,你需要在config.json
的module
部分添加requestPermissions
字段,如下所示:json<br>{<br> "configurations": {<br> "Global": {<br> "systemCapabiliteis": [],<br> "module": {<br> "package": "com.example.myapplication",<br> "name": ".MyApplication",<br> "mainAbility": ".MainAbility",<br> "deviceType": "phone",<br> "versionCode": 1,<br> "versionName": "1.0",<br> "requestPermissions": [<br> "ohos.permission.WRITE_EXTERNAL_STORAGE",<br> "ohos.permission.READ_EXTERNAL_STORAGE"<br> ]<br> },<br> ...<br> }<br> }<br>}<br>
这里的requestPermissions
数组包含了你的应用请求的权限,ohos.permission.WRITE_EXTERNAL_STORAGE
用于写入外部存储,而ohos.permission.READ_EXTERNAL_STORAGE
用于读取外部存储。
然后,在你的代码中,你可能还需要检查权限是否被授予,这可以通过调用context.checkPermission
函数来完成。如果权限未被授予,你可以通过context.requestPermissionsFromUser
函数来请求用户授权。
这是一个示例:js<br>import featureAbility from '@ohos.ability.featureAbility';<br>import fs from '@ohos.file';<br><br>let context = featureAbility.getContext();<br><br>// 检查权限<br>let permission = context.checkPermission('ohos.permission.WRITE_EXTERNAL_STORAGE', '', '');<br>if (permission != featureAbility.PermissionState.GRANTED) {<br> // 请求权限<br> let permissions = ['ohos.permission.WRITE_EXTERNAL_STORAGE'];<br> let requestCode = 1;<br> context.requestPermissionsFromUser(permissions, requestCode);<br>}<br><br>// 然后你可以继续你的文件操作代码...<br>
请注意,你可能需要根据你的应用的具体需求调整这些代码。
emmmm没有config.json这个文件啊
我理解就是没有他。所以你要创建它。然后按以下内容
{ “module”: { … “reqPermissions”: [ { “name”: “ohos.permission.WRITE_EXTERNAL_STORAGE”, “reason”: “需要此权限来写入外部存储。”, “used”: true }, { “name”: “ohos.permission.READ_EXTERNAL_STORAGE”, “reason”: “需要此权限来读取外部存储。”, “used”: true } ], … } }
你再琢磨琢磨吧,就这样了,再多我也帮不了你了。