gpt4 book ai didi

go - os.Create 和 os.Open 不能与 gomobile 一起使用并 react native

转载 作者:IT王子 更新时间:2023-10-29 02:22:17 27 4
gpt4 key购买 nike

package component

import (
"encoding/json"
"io/ioutil"
"os"
)


type LastComponent struct {
Name string
}

const fname = "componentfiles"


func Persist(comp string) string {
lcomp := LastComponent{Name: comp}
b, err := json.Marshal(lcomp)
if err != nil {
return "err-MARSHAL"
}
file, err := os.Create(fname)
if err != nil {
return "err-CREATE-FILE"
}
defer file.Close()
_, err = file.Write(b)
if err != nil {
return "err-FILE-WRITE-PROB"
}
return ""
}

func Component() string {
f, err := os.Open(fname)
if err != nil {
return "err-FILE-NOT-OPEN"
}
defer f.Close()
b, err := ioutil.ReadAll(f)
if err != nil {
return ""
}
var v LastComponent
json.Unmarshal(b, v)
return v.Name
}


}

上面的代码工作正常,代码的 javascript 端也是如此。我一直在我的 javascript 中收到 err-CREATE-FILE。所以 os.Createos.Open 没有按预期工作。

虽然是内部存储,但是不需要权限,但是我也在manifest文件中开启了权限,但是没有用。

与 React Native 一起使用时,在 android 中使用 gomobile OpenCreate 文件的正确方法是什么?

更新:

adb logcat 中,我到处都是这个

E/Vold ( 276): 找不到/storage/sdcard1/Android/data/com.gotest/cache/的安装卷

最佳答案

因此,如果您将其作为参数传入,您应该会取得一些成功 - 以下内容对我有用:

Go:

func Component(folderPath string) string {
f, err := os.Open(path.Join(folderPath, fname))
...

Java:

Component.Component(getApplicationContext().getFilesDir().getAbsolutePath())

或者,您可以使用类似getExternalStorageDirectory().getAbsolutePath() 的方法。它们的关键是您需要获取进程/用户可写的存储方式。

关于go - os.Create 和 os.Open 不能与 gomobile 一起使用并 react native ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42371997/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com