如何将具有特殊字符的文件传输到我的 Android SD 卡?

How can I transfer a file with special character to my Android SDcard?

最近我在 Android SD 卡中创建带有来自 iPhone 的特殊字符的文件时遇到了麻烦。

我的设备:Galaxy Note4 KitKat。 我的电脑:Window7

我从 iPhone 得到了一个文件到我的电脑。 此文件包含表情符号 (http://chars.suikawiki.org/string?s=%F0%9F%90%8D) 我可以将此文件从我的 PC 传输到内部 SD 卡,但我无法传输到可移动 SD 卡。

即使我也无法将复制的文件从内部传输到移动设备。(我使用 FileOutputStream,File.createNewFile 进行复制)

我怀疑是SDcard的文件系统,试过其他FAT16(2GB sandisk Sdcard), exFAT(64GB samsung SDcard)。

但我都失败了。

我试图找到文件系统规范,但没有找到任何相关内容。 我也怀疑保留的文件标题字符,但它没有关系。

简而言之,

  1. 为什么这个文件不能传输到移动SD卡?

  2. 如何在不重命名的情况下以编程方式将此文件复制到 SD 卡?

===== 添加片段 =====

下面的特殊字符在Android设备文件浏览器中看起来像表情符号,但在我的电脑中,它看起来是顺序特殊字符。

new File("/storage/emulated/0/.txt").createNewFile(); //内部存储器。工作。

new File("/storage/extSdCard/.txt").createNewFile();//移动存储。不工作

我在保存到 SD 时偶然发现了类似的问题。这似乎是一个安全问题。您现在需要使用存储访问框架 See Here

您可以使用分配给您的应用程序的文件,而不必使用存储访问框架。访问应用程序数据目录的一种方法是使用:

ContextCompat.getExternalFilesDirs(context, type)

这将是向后兼容的。或者您可以为棒棒糖用户使用以下内容

Context.getExternalMediaDirs()

每个方法都会给你 2 个目录。 1 个用于内部存储器,其他用于 SD(如果设备有插槽)。从这里您可以保存所有应用程序特定数据。

注意:如果用户卸载您的应用程序,此数据将被删除。

希望对您有所帮助!