我正在研究跨平台库,它将用于在光学媒体上进行文件操作(创建,重命名,删除...)。所以我有关于路径处理的问题。
目前我的库中路径长度没有限制,因此用户可以创建操作系统不支持的路径很长的文件夹。例如,在windows中,用户可以使用大于MAX_PATH
个字符的pathlen创建文件夹。那么在这种情况下我必须做些什么呢?
第一个问题的解决方案,可能会检查文件/文件夹复制后创建的新路径len。但是由于Windows和Linux中MAX_PATH和PATH_MAX的值不同而导致另一个问题。
答案 0 :(得分:0)
C
定义了标准宏FILENAME_MAX
。
“此宏常量扩展为与所需大小相对应的整数表达式 用于保存最长文件名字符串的char元素数组 系统。或者,如果系统没有这样的限制,则将其设置为推荐值 用于保存任何文件名的字符数组的大小。“
这应该足够大,以指定一个字符串,该字符串包含可用于文件名的最长名称。它是一个宏,因此它的值与平台有关。
大多数操作系统APIS都应该返回一个特殊错误,表明该名称太过处理,您可以正确处理它并向用户报告。