zoukankan      html  css  js  c++  java
  • 关于Android 文件API允许创建目录名的最大字符数

    问题说明

    测试文件管理器的时候遇到到一个诡异的问题,新建目录输入了比较长的目录名,目录创建成功(File.mkdir返回true),但是一刷新文件管理器就挂了。之后再也进不了文件管理器,都是闪退。换了好几个文件管理器测试,如:ES,MIUI,OI。问题依旧。adb log 输出的信息如下,没有多少帮助。
     
    03-20 17:38:48.969 F/<unknown>( 6020): stack corruption detected: aborted
    03-20 17:38:48.999 W/InputDispatcher( 1366): channel '417e1c48 com.metago.astro/com.metago.astro.MainActivity (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
    03-20 17:38:48.999 E/InputDispatcher( 1366): channel '417e1c48 com.metago.astro/com.metago.astro.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
    03-20 17:38:48.999 W/InputDispatcher( 1366): Attempted to unregister already unregistered input channel '417e1c48 com.metago.astro/com.metago.astro.MainActivity (server)'
    03-20 17:38:48.999 I/WindowManager( 1366): WINDOW DIED Window{417e1c48 com.metago.astro/com.metago.astro.MainActivity paused=false}
    03-20 17:38:49.009 D/Zygote  ( 1181): Process 6020 exited cleanly (127)
    03-20 17:38:49.009 E/JavaBinder( 1366): !!! FAILED BINDER TRANSACTION !!!
    03-20 17:38:49.009 I/ActivityManager( 1366): Process com.metago.astro (pid 6020) has died.
    03-20 17:38:49.019 W/ActivityManager( 1366): Force removing ActivityRecord{418ad088 com.metago.astro/.MainActivity}: app died, no saved state

    问题分析

    由于测试的文件管理器都是同样的现象,怀疑是目录名太长引起的。于是写了一个测试程序,得到如下结果。
    • 4.2.2 File.mkdir 目录名的允许的最大中文字符数为85
    • 4.1.2 File.mkdir 目录名的允许的最大中文字符数为255,但是如果存在大于或等于90个中文字符的目录,在调用 File.list 的时候程序会挂掉
    • 4.0.4 File.mkdir 目录名的允许的最大中文字符数为255,但是如果存在大于或等于106个中文字符的目录,在调用 File.list 的时候程序会挂掉 

    结论

    4.2.2 貌似修复了此问题,限制允许创建目录名的最大长度为85,能够创建成功的目录都不会引起调用 File.list 程序崩溃。因此,文件管理器也在UI层限制用户输入文件名最大长度为85。
  • 相关阅读:
    点击复制的代码
    色彩浅谈——同色系的变化
    网页设计中色彩的运用
    网页设计中透明效果的使用技巧
    基于栅格的网站设计
    页面之门——登录页的设计分析
    错误变惊喜,10个有趣的404页面设计(转)
    jQuery load()方法用法集锦!
    RPM命令用法
    如何使iframe透明
  • 原文地址:https://www.cnblogs.com/shaobin0604/p/2971681.html
Copyright © 2011-2022 走看看