C# 通过代码访问Android设备上的特定位置

C# 通过代码访问Android设备上的特定位置,c#,android,unity3d,C#,Android,Unity3d,我正在将文件序列化/反序列化到Application.persistentDataPath返回的路径中,以保存/加载播放机创建的级别,它可以完美地工作。但是,当我尝试通过Directory.GetFiles()访问同一路径时,返回的值为0 以下是我如何储蓄: using (Stream stream = new FileStream(Application.persistentDataPath + @"\" + name + ".LevelData", FileMode.Create, File

我正在将文件序列化/反序列化到Application.persistentDataPath返回的路径中,以保存/加载播放机创建的级别,它可以完美地工作。但是,当我尝试通过Directory.GetFiles()访问同一路径时,返回的值为0

以下是我如何储蓄:

using (Stream stream = new FileStream(Application.persistentDataPath + @"\" + name + ".LevelData", FileMode.Create, FileAccess.Write, FileShare.None))
{
    formatter.Serialize(stream, level);
}
我尝试访问此位置的原因是,我可以弹出一个菜单,询问玩家要加载哪个关卡,然后它会显示他们创建的每个关卡,以便他们可以选择并编辑它

这将返回大小为零的字符串数组:

Directory.GetFiles(Application.persistentDataPath, "*LevelData", SearchOption.TopDirectoryOnly);
另外,在调试Application.persistentDataPath返回的路径后,我注意到它返回的路径实际上并不存在于我的移动设备上。不过,它有一些奇怪的行为,好像我试图创建一个文件夹来完成该路径,我的设备根本不允许我这样做,但如果我尝试为该文件夹命名任何其他名称,它就可以正常工作


为了从Unity访问Android设备上的文件,我是否需要另一个库?在Windows上工作时,Directory.GetFiles()可以正常工作。

我受够了,所以我决定了另一种方法

因为我能够序列化/反序列化文件,所以我只是序列化了一个列表,我将与系统中当前的级别保持同步。每次添加新级别时,名称都会添加到列表中并序列化。每当删除某个级别时,该名称都会从列表中删除并序列化。每当用户去加载一个关卡时,这个列表就会填充到下拉列表中,这样玩家就可以选择要加载的关卡


无论如何,谢谢大家的帮助

您是否在android清单中包含写入权限?我没有,但我假设,由于序列化/加载正在工作(即使在关闭/重新打开应用程序之后),文件已成功创建。你认为我需要目录.GetFiles的写入权限吗?请看这篇文章:是的,你需要权限Windows使用反斜杠,而android使用正斜杠,请检查这是否是你的问题。@Bijan那篇文章不是我需要的。我的级别正确地保存并加载到设备上,但我需要能够获得该位置中所有文件的集合,以便将它们打印给用户。我还继续向AndroidManifest.xml文件添加了权限,并将其放在Assets/Plugins/Android/中。我不是100%确定这是不是正确的方法,所以任何提示都将不胜感激。