V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SvenSven
V2EX  ›  Android

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

  •  
  •   SvenSven · 2013-03-27 12:23:36 +08:00 · 9923 次点击
    这是一个创建于 4249 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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等其他文件的文件名再长也不会出现上述问题,
    是不是只有声音文件的文件名有限制呢?
    14 条回复    1970-01-01 08:00:00 +08:00
    peizh2006
        1
    peizh2006  
       2013-03-27 15:03:35 +08:00
    getFilePathFromEvalItem的实现?
    感觉Android不会犯这种错误。
    SvenSven
        2
    SvenSven  
    OP
       2013-03-27 15:30:34 +08:00
    那个是我自己写的方法,返回值是路径:
    例如: /mnt/sdcard/MoodMeter/voices/VIOCE_1364290165465GXTX_1364357242049YVJU.3gpp
    ljbha007
        3
    ljbha007  
       2013-03-27 15:52:32 +08:00
    你把那个文件改个很短的名字
    然后用getFilePathFromEvalItem返回 看看还会不会出现文件不存在的状况

    你给的条件无法得出“因为文件名太长而无法找到文件”的结论
    SvenSven
        4
    SvenSven  
    OP
       2013-03-27 16:53:12 +08:00
    你说的就是上面提到的第二种情况,
    getFilePathFromEvalItem返回/mnt/sdcard/MoodMeter/voices/1364357242049YVJU.3gpp
    后台log出文件存在
    SvenSven
        5
    SvenSven  
    OP
       2013-03-27 16:55:44 +08:00
    @ljbha007
    你说的就是上面提到的第二种情况,
    getFilePathFromEvalItem返回/mnt/sdcard/MoodMeter/voices/1364357242049YVJU.3gpp
    后台log出文件存在
    SvenSven
        6
    SvenSven  
    OP
       2013-03-27 16:57:07 +08:00
    ljbha007
        7
    ljbha007  
       2013-03-27 17:02:36 +08:00
    @SvenSven 我是说 同一个文件 重命名之后比如改成 a.3gpp
    有可能只是那一个文件的问题
    SvenSven
        8
    SvenSven  
    OP
       2013-03-27 17:19:34 +08:00
    @ljbha007
    试过,可以播放的
    ljbha007
        9
    ljbha007  
       2013-03-27 17:51:04 +08:00
    @SvenSven
    我没有问你是不是可以播放 我问你的是 改了文件名之后你这段代码 是否是显示exist!
    SvenSven
        10
    SvenSven  
    OP
       2013-03-28 09:13:21 +08:00
    是显示exist!,
    如果还不相信的话,就自己用类似与上面的代码试一试吧
    SvenSven
        11
    SvenSven  
    OP
       2013-03-28 09:13:29 +08:00
    SvenSven
        12
    SvenSven  
    OP
       2013-03-28 09:34:28 +08:00
    ljbha007
        13
    ljbha007  
       2013-03-28 18:49:12 +08:00
    @SvenSven 你里边单词拼错了 VOICE拼成了VIOCE
    SvenSven
        14
    SvenSven  
    OP
       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 里

    试一下到底神马结果
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5852 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 03:00 · PVG 11:00 · LAX 19:00 · JFK 22:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.