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.Create
和os.Open
无法正常工作。
虽然它是一个内部存储,但不需要权限,但我也打开了清单文件中的权限,但没有用。
使用gomobile时,使用和React Native一起使用的Open
和Create
文件的正确方法是什么?
更新:
在adb logcat
中,我一直到处都是
E/Vold ( 276): Failed to find mounted volume for /storage/sdcard1/Android/data/com.gotest/cache/
答案 0 :(得分:0)
因此,如果您将此作为参数传递,您应该取得一些成功 - 类似以下内容对我有用:
转到:
Component.Component(getApplicationContext().getFilesDir().getAbsolutePath())
爪哇:
getExternalStorageDirectory().getAbsolutePath()
或者,您可以使用{{1}}之类的内容。关键是你需要获得可由进程/用户写入的存储方式。