2015-03-31 42 views
0

最近我遇到了在iPhone上用特殊字符在Android SD卡上创建文件的麻烦。如何将具有特殊字符的文件传输到我的Android SD卡?

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

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

即使我不能转移,从内部到可移动复制的文件了。(我用FileOutputStream中,File.createNewFile复制)

我怀疑SD卡的文件系统,并试图以其他FAT16(2GB SD卡的SanDisk) exFAT(64GB三星SDcard)。

但我都失败了。

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

总之,

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

  2. 如何以编程方式将此文件复制到SDcard而无需重命名?

=====添加片断=====

以下特殊字符似乎是在Android设备上的文件浏览器表情,但在我的电脑,它看起来序特殊字符。新文件(“/ storage/emulated/0/.txt”)。createNewFile(); //内部存储器。工作。

新文件(“/ storage/extSdCard/.txt”)。createNewFile(); //可移动存储。不工作

+0

你的故事没有意义。文件的内容永远不能成为不能被复制的原因。一个文件只是一个字节序列。请显示您的复制代码。 – greenapps 2015-03-31 12:19:13

+0

'这个文件包含一个表情(http://chars.suikawik​​i.org/string?s=%F0%9F%90%8D)'。这不是一个文件。这是一个提供html页面的网址。请详细说明。你在那个网页上做什么? – greenapps 2015-03-31 12:26:57

+0

Hi @greenapps。我知道这似乎是无稽之谈。但它是真实的。该文件名显示在我的电脑中“”。但在我的Android手机中,该文件名似乎是我提到的表情符号的组合。 你可以在下面测试我的代码。 new File(“/ storage/emulated/0/.txt”)。createNewFile(); //内部存储器。工作。 新文件(“/ storage/extSdCard/.txt”)。createNewFile(); //可移动存储。不工作 感谢您的关注。 – larsien 2015-04-01 03:33:05

回答

0

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

虽然您可以使用分配给您的应用程序的文件,但不必使用Storage Access Framework。访问您的应用程序数据目录的一种方法是使用:

ContextCompat.getExternalFilesDirs(context, type) 

这将是向后兼容的。或者你可以使用下面的棒棒糖用户

Context.getExternalMediaDirs() 

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

被警告:如果用户曾卸载您的应用程序,这些数据将被删除。

希望这有助于!

+0

感谢您的回答,但我的问题是相关的文件名包含特殊字符。我试图让我从getExternalFilesDirs得到的路径中的“aaa.txt”。我成功。但我以“.txt”失败。我会再次改变我的问题。 – larsien 2015-04-02 02:58:29

+0

'希望这有助于'。你的回答并不能解决问题。为什么它被标记为正确的对我来说是一个谜,因为它完全脱离了上下文。 – greenapps 2015-04-02 09:02:15

相关问题