android .3gpp后缀名文件的文件名有长度限制??? 项目里出现了个奇怪的问题,如下:

2013-03-27 12:23:36 +08:00
 SvenSven
deletefile = new File(getFilePathFromEvalItem(mItem));
Log.d("deletefile", deletefile.getAbsolutePath());
if(deletefile.exists()){
Log.d("file:","exists!" );
boolean deleted = deletefile.delete();
Log.d("deleted:",String.valueOf(deleted) );
}else {
Log.d("file:","not exists!" );
}
看上面的代码:
当solutePath= /mnt/sdcard/MoodMeter/voices/VIOCE_1364290165465GXTX_1364357242049YVJU.3gpp
时后台log出 file: not exists!
当solutePath= /mnt/sdcard/MoodMeter/voices/1364357242049YVJU.3gpp
时后台log出 file: exists!
而文件都是真实存在于文件系统的,
所以很明显是因为第一个的文件名太长,而导致读取不了,
所以第二个正常读取到了

那么,如果我要保留文件名的长度,而且可以读取,有什么方法实现呢?

注意:经本人实测,后缀名为.3gp , .jpg等其他文件的文件名再长也不会出现上述问题,
是不是只有声音文件的文件名有限制呢?
10102 次点击
所在节点    Android
14 条回复
peizh2006
2013-03-27 15:03:35 +08:00
getFilePathFromEvalItem的实现?
感觉Android不会犯这种错误。
SvenSven
2013-03-27 15:30:34 +08:00
那个是我自己写的方法,返回值是路径:
例如: /mnt/sdcard/MoodMeter/voices/VIOCE_1364290165465GXTX_1364357242049YVJU.3gpp
ljbha007
2013-03-27 15:52:32 +08:00
你把那个文件改个很短的名字
然后用getFilePathFromEvalItem返回 看看还会不会出现文件不存在的状况

你给的条件无法得出“因为文件名太长而无法找到文件”的结论
SvenSven
2013-03-27 16:53:12 +08:00
你说的就是上面提到的第二种情况,
getFilePathFromEvalItem返回/mnt/sdcard/MoodMeter/voices/1364357242049YVJU.3gpp
后台log出文件存在
SvenSven
2013-03-27 16:55:44 +08:00
@ljbha007
你说的就是上面提到的第二种情况,
getFilePathFromEvalItem返回/mnt/sdcard/MoodMeter/voices/1364357242049YVJU.3gpp
后台log出文件存在
SvenSven
2013-03-27 16:57:07 +08:00
ljbha007
2013-03-27 17:02:36 +08:00
@SvenSven 我是说 同一个文件 重命名之后比如改成 a.3gpp
有可能只是那一个文件的问题
SvenSven
2013-03-27 17:19:34 +08:00
@ljbha007
试过,可以播放的
ljbha007
2013-03-27 17:51:04 +08:00
@SvenSven
我没有问你是不是可以播放 我问你的是 改了文件名之后你这段代码 是否是显示exist!
SvenSven
2013-03-28 09:13:21 +08:00
是显示exist!,
如果还不相信的话,就自己用类似与上面的代码试一试吧
SvenSven
2013-03-28 09:13:29 +08:00
SvenSven
2013-03-28 09:34:28 +08:00
ljbha007
2013-03-28 18:49:12 +08:00
@SvenSven 你里边单词拼错了 VOICE拼成了VIOCE
SvenSven
2013-03-29 09:50:36 +08:00
@ljbha007 ,嗯,是写错了,但是不会影响到程序的,
如果你有安装开发环境的话,
建议你试一下,
将一个.3gpp文件 的文件名改长(例如:VOICE_1364290165465GXTX_1364357242049YVJU.3gpp),然后执行

File deletefile= new File(你的文件路径);
if(deletefile.exists()){
Log.d("file:","exists!" );
boolean deleted = deletefile.delete();
Log.d("deleted:",String.valueOf(deleted) );
}else {
Log.d("file:","not exists!" );
}

这里需要加个权限uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
到AndroidManifest.xml 里

试一下到底神马结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/64163

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX