【问题标题】:Xamarin Android file system pathsXamarin Android 文件系统路径
【发布时间】:2016-03-09 12:25:04
【问题描述】:

我正在尝试在 Android 文件系统上写入和读取文件。您认为这项任务很简单,但我似乎无法为实际存在的文件夹/路径找到正确的枚举器。

我已经阅读了几篇关于同一主题的文章,但没有一篇文章直接回答了这个问题,而那些似乎已经解决了他们的问题的文章,已经通过似乎对我不起作用的路径来解决问题。 一些建议似乎与 System.IO 有关,而另一些建议似乎与 Java 等效。

我正在尝试做的只是在内部存储(不是外部 SD 卡或其他东西)中的某个位置创建一个文件,该文件可从设备本身(通过文件浏览器应用程序或类似应用程序)访问。

p>

如果进展顺利(目前还没有),那么我也想稍后再读。

我不是在寻找用于写入或读取文件的代码 - 我在寻找可以为我提供可以执行此操作的文件夹的正确路径的东西。

我尝试了许多不同的变体,其中一些是:

Environment.GetFolderPath(Environment.SpecialFolder.Personal);

返回路径:/data/data/my_app_full_name/files/

global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath.ToString();

返回路径:/storage/emulated/0/

任何人都可以明确回答要使用哪个枚举器吗? - 将不胜感激。

附言。我正在通过 USB 从 Xamarin Studio 在实际设备 (Android 5.0.2) 上启动应用程序。

编辑: 至少对我来说,答案是在 cmets 下找到,供 misho 重播。

【问题讨论】:

  • 你检查我的答案了吗?

标签: android file-io xamarin


【解决方案1】:

我认为这是你需要的:

编辑

public static string Directorypath
    {
        get
        {
            return System.IO.Path.Combine((string)Android.OS.Environment.ExternalStorageDirectory, "FolderPath");
        }
    }

【讨论】:

  • Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.ExternalStorageDirectory) 不起作用,因为 GetExternalStoragePublicDirectory() 将字符串作为参数。所以我尝试了 Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath)) 代替它给了我:/storage/emulated/0/storage/emulated/0 所以也不起作用。
  • ups,对不起,复制了错误的代码。更新答案,立即查看
  • Path.Combine(Android.OS.Environment.ExternalStorageDirectory.ToString(), "Download") 返回:"/storage/emulated/0/Download" 但是,如果我使用设备上的文件浏览器并转到文件夹下载,上面显示的路径实际上是“/storage/emulated/0/Download”。为什么它有这条奇怪的实际路径我无法解释——“仿真”这个词肯定会让人感到困惑,因为它让你认为它在某种程度上与模拟器有关,尽管这是一个设备......所以现在我'我会尝试使用这条路径,看看情况如何 - 谢谢 misho - 我要测试更多。
  • 我会尝试解释一下:如果我没记错的话,emulated 代表外部存储,而不是设备本身。 0 定义用户。 JellyBean 4.2 添加了多用户功能,因此如果您添加另一个用户,则会有另一个文件夹 /storage/emulated/1/ 等等。为了更清楚:/storage/ - 实际存储。 /emulated/ - 存储类型(或 smth,绝对不是 android 模拟器)。 /0/ - 用户。 emulated 的定义可能不是 100% 正确,但我很确定它与 genymotion 或任何模拟器无关。
  • android device monitor看上面的屏幕是这样的:i.imgur.com/Jo0lJLs.png我的设备是galaxy note 4。你可以在/android-sdk/tools/文件夹中找到device monitor
猜你喜欢
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-04
相关资源
最近更新 更多