最近我在使用iPhone特殊字符的Android SD卡中创建文件时遇到了麻烦。
我的设备: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三星SD卡)。
但我都失败了。
我试图找到文件系统规范,但我没有发现任何相关内容。 我还怀疑保留文件标题字符,但它没有关系。
简而言之,
为什么无法将此文件传输到可移动SD卡?
如何在没有重命名的情况下以编程方式将此文件复制到SD卡?
=====添加片段=====
下面的特殊字符似乎是Android设备文件浏览器中的表情符号,但在我的电脑中,它看起来是序数特殊字符。
new File(" /storage/emulated/0/.txt")。createNewFile(); //内部存储器。工作。
new File(" /storage/extSdCard/.txt")。createNewFile(); //可移动存储。不工作
答案 0 :(得分:0)
我偶然发现了一个类似的问题,即保存到SD。这似乎是一个安全问题。您现在需要使用存储访问框架See Here。
您可以使用分配给您的应用程序的文件,而不必使用存储访问框架。访问Applications数据目录的一种方法是使用:
ContextCompat.getExternalFilesDirs(context, type)
哪个会向后兼容。或者您可以将以下内容用于Lollipop用户
Context.getExternalMediaDirs()
每种方法都会为您提供2个目录。 1表示内部存储器,1表示SD(如果设备有插槽)。从这里,您可以保存所有特定于应用程序的数据。
警告:如果用户卸载了您的应用程序,这些数据将被删除。
希望这有帮助!