Base64在某些设备上提供无效参数IOException

时间:2013-12-08 06:18:13

标签: android ioexception

我有Nexus 4,它没有给我任何问题。但是当我在micromax画布上尝试我的代码时,它在尝试保存带有编码文件名的文件时抛出了一个IOException“无效参数”。

我正在使用此行转换文件名。

Base64.encodeToString(name.getBytes(),Base64.DEFAULT))

其中name是文件名(例如:hello.jpg)。

基本上我想转换文件名,这样任何人都无法在SD卡中搜索它。

我认为问题是FAT文件系统支持最多42个字符的文件名长度,但它产生的文件名更长。我也尝试过URL安全,没有填充而不是Base64中的默认值。

我需要知道一些替代解决方案。

4 个答案:

答案 0 :(得分:0)

出于解决方法的目的,尝试使用自定义类进行编码和解码

更多信息: "IllegalArgumentException: bad base-64" while trying to use Base64 on Android 1.5

答案 1 :(得分:0)

我已在应用中解决了此问题,但使用了不同的方法而不是base64

答案 2 :(得分:0)

我想这应该有用

String filename = Base64.encodeToString(url.getBytes(), Base64.URL_SAFE|Base64.NO_WRAP);

答案 3 :(得分:0)

我在apache commons中使用android.util.Base64而不是Base64类解决了这个问题(我不知道它是如何导入的)。