首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建文件和写入文件(安装在三星平板电脑上的外部微SD卡)(在APK中)?

如何创建文件和写入文件(安装在三星平板电脑上的外部微SD卡)(在APK中)?
EN

Stack Overflow用户
提问于 2021-07-08 16:09:29
回答 1查看 358关注 0票数 0

原文:

有人知道高迈勒如何构建(而不是绑定)支持FileSystem吗?如本讨论中所讨论的,我能够使用资产包打开和读取文件。

但不确定如何在gomobile生成的APK文件中创建对新文件的写入,我能够在Go中运行以下大量代码,并验证"testFile.txt“是根据所提供的消息创建的。

代码语言:javascript
复制
message := []byte("Hello, testing!")
err := ioutil.WriteFile("testFile.txt", message, 0777)
if err != nil {
   fmt.Println(err)
}

但是在生成APK文件并在平板电脑(Android)上运行它之后,我会得到如下所示的文件访问错误,并且没有创建"testFile.txt“。

I/GoLog:打开testFile.txt:只读文件系统

任何暗示都是感激的。

根据这个说明更新了我的问题

你用什么版本的围棋(“围棋版本”)?

代码语言:javascript
复制
$ go version
go version go1.16.3 windows/amd64

这个问题是否与最新版本一起复制?

不可用

您使用的是什么操作系统和处理器架构(“go”)?

Windows 10专业版

代码语言:javascript
复制
go env Output
$ go env

set GO111MODULE=auto
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\instu\AppData\Local\go-build
set GOENV=C:\Users\instu\AppData\Roaming\go\env
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\instu\OneDrive\Desktop\go-workSpace\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\instu\OneDrive\Desktop\go-workSpace
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Projects\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Projects\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.16.3
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Users\instu\OneDrive\Desktop\go-workSpace\src\Minicloud\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0 -fdebug-prefix-map=C:\Users\instu\AppData\Local\Temp\go-build2510967962=/tmp/go-build -gno-record-gcc-switches

你干什么了?

在最初的问题一节中描述,但概括地说,我需要添加一个功能,能够将日志写入到三星S6 lite平板电脑上安装的微SD卡中。下面是我在Go中编写文件所遵循的示例代码。它在我运行go时工作,但是在生成并在Tablet上安装APK文件后,我会体验到只读错误消息。

你想看到什么?

预期Android应用程序(安装为gomobile生成的APK文件)能够创建一个文件并写入所创建的文件。

你却看到了什么?

只读错误信息。

I/GoLog:打开testFile.txt:只读文件系统

EN

回答 1

Stack Overflow用户

发布于 2021-07-13 20:26:58

此示例代码适用于我(编写到内部存储):

代码语言:javascript
复制
func storeLog(fileDir string, fileName string, msg string) {
    msgByte := []byte(msg)

    file, err := os.Create(fileDir + fileName)

    if err != nil
      fmt.Printf(err)
    defer file.Close()
    numB, err := file.Write(msgByte)

    if err != nil
      fmt.Printf(err)
enter code here
    fmt.Printf("wrote %d bytes\n", numB)
}

只需要确保:

  • 找到适当的fileDir:

亚行-s壳回声$EXTERNAL_STORAGE

  • 使用以下命令查找您的deviceID

亚行设备

  • 在AndroidManifest.xml文件中添加写入文件的用户权限
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68305160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档