在CodenameOne中保存文件

时间:2016-05-13 01:32:25

标签: codenameone

我正在尝试将一些屏幕转储保存到内部存储器以进行调试,但我似乎无法访问它们。当我调用FileSystemStorage.getInstance()。getAppHomePath()时,我得到一个看起来像这样的路径:

/data/data/com.mycompany.myapp/files /

但我无法在Android文件传输工具中看到此文件夹,因此我无法将文件拖到我的Mac上。我也尝试使用Message类将它们附加到电子邮件中,但由于某种原因,附件从未显示过。我注意到很多应用程序将数据存储在这样的文件夹中:

/Android/data/com.doubletwist.androidplayer/

如果我尝试创建这样的文件夹,我会遇到两个问题。首先,它不是平台独立的。 (这没关系,因为我只是为了调试而这样做。)其次,它不起作用。我收到错误告诉我需要使用FileSystemStorage.getInstance()返回的目录.getAppHomePath()

有什么方法可以将文件保存到我可以实际检索到的文件夹中吗?如果我有一个独立于平台的方式会更有帮助,但现在任何有效的方法都可以。

1 个答案:

答案 0 :(得分:0)

文件系统是一个非常“不可移植”的概念。默认情况下,app home是一个私人文件夹,包括Android 4+在内的某些移动操作系统保持私密且无法访问。

Android有一个“sdcard”概念,它曾经是一个物理存储,你可以在任何目录中写任何东西而不会出现问题。这不再适用于Android的更高版本,但您可以从sdcard目录中读取并检测它。

FileSystemStorage有一个API来获取root及其类型,如果你有一个sdcard类型,你可以从那里读取。您可以使用FileTree查看应用程序公开的文件层次结构,这对调试很有用。