背景
最近在处理Android 11读写权限时,萌生了个偏门想法,在公有目录下创建文件,使用文件的文件名信息使得不同app之间共享数据
问题
在给文件命名时,出现了以下报错
System.err: java.io.IOException: File name too long
文件名太长
分析
查看Linux源码,我们知道
#ifndef _LINUX_LIMITS_H
#define _LINUX_LIMITS_H
#define NR_OPEN 1024
#define NGROUPS_MAX 65536
#define ARG_MAX 131072
#define LINK_MAX 127
#define MAX_CANON 255
#define MAX_INPUT 255
#define NAME_MAX 255
#define PATH_MAX 4096
#define PIPE_BUF 4096
#define XATTR_NAME_MAX 255
#define XATTR_SIZE_MAX 65536
#define XATTR_LIST_MAX 65536
#define RTSIG_MAX 32
#endif
Linux内核对命名的最大字符长度是255
验证
使用长度为256个字符【如a】去命名,发现依然是报上述的错误;
使用255个则不会出现长度过长的错误
同理目录的命名最大长度也是255【只是他很坑不会出现像文件命名太长的错误,出现异常情况也只能连猜带蒙】
总结
文件或目录的最大长度是255
路径的最大长度是4096