【发布时间】:2011-12-08 19:05:36
【问题描述】:
所以我正在制作这个 android 应用程序,它需要从用户提供的 CSV 文件中读取数据。
CSV 文件在台式计算机上更舒适地编辑,所以我在应用程序中没有编辑器,它是“只读”的;我假设手机的 SD 卡上有一个文件。
在Data Storage documentation 之后,我设法编写了一个从外部存储读取文件的哑版本,硬编码相对于 getExternalStorageDirectory 返回的文件夹位置。所以目前我有:
private static final String CSV_FILE = "/Android/foo/bar.csv"
...
File f = new File(Environment.getExternalStorageDirectory(), CSV_FILE);
然后我将我的手机连接到 PC,在“/Android”文件夹(存在于我的手机上)中创建一个“foo”文件夹,复制“bar.csv”文件,一切正常。
现在显然,如果我想分发应用程序,这是不可接受的。所以我有几个问题:
自然的解决方案是对文件位置进行软编码,在任何其他系统中,我将依赖内置的“文件管理器”或其他东西,让用户浏览到正确的文件。 令人惊讶的是我找不到这样的控件,并且似乎有很多第三方文件浏览器应用程序。这是否意味着要求用户在手机上选择文件不是“习惯”?我应该编写自己的“文件浏览器”吗?
关于我应该如何命名我的“foo”目录是否有约定?我已经看到应用程序使用看起来像 java 包的名称创建目录,我是否将其误认为是内部存储?
还有一个 getExternalStoragePublicDirectory 方法,它采用“目录类型”常量。在我的情况下,假设文件在 DIRECTORY_DOWNLOADS 中是否“有意义”?(或在 DIRECTORY_DOWNLOADS 的某个子文件夹中?)
我应该担心 lambda 用户如何将文件放在他们的手机上吗?对我来说,在我的电脑上插上电话很简单,但在所有机器人上真的很容易吗?
对不起,如果所有这些听起来微不足道,只是想在做一些愚蠢的事情之前让我清醒一下。
谢谢。
【问题讨论】:
标签: android filesystems