标题:大家在用Dir查看一个文件夹时,遇到长文件名怎样解决?
只看楼主
tempwc
Rank: 2
等 级:论坛游民
帖 子:14
专家分:25
注 册:2018-11-14
结帖率:33.33%
已结贴  问题点数:20 回复次数:7 
大家在用Dir查看一个文件夹时,遇到长文件名怎样解决?
文件名的长度超过255字节时,DIR就会出错。有什么办法能DIR这个文件么?
搜索更多相关主题的帖子: 查看 文件夹 文件名 出错 办法 
2018-11-21 19:48
tempwc
Rank: 2
等 级:论坛游民
帖 子:14
专家分:25
注 册:2018-11-14
得分:0 
没有人回答么?
2018-11-28 12:01
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:7 
没建过这个长名字的文件来,给个名字测试一下看看哪种方式不会出错。

一般是三种方法:
dir 函数
dir 控件
FSO 组件

还有API的,我不会。

授人于鱼,不如授人于渔
早已停用QQ了
2018-11-28 12:44
icecool
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:20
帖 子:1214
专家分:1366
注 册:2005-3-14
得分:7 
我的文件名超不过255的,到244就不能再输入了

http://toorup.3v.do
loading...
2018-11-28 15:10
tempwc
Rank: 2
等 级:论坛游民
帖 子:14
专家分:25
注 册:2018-11-14
得分:0 
    我在XP下用一些下载软件下载文件时,它的文件名就可以超过255字节。我有一个游戏的回放文件名为:
    tp2v3挑战3z,盟友p菜鸟15分钟退,3z持续冲口,不断空投,将t仅有的主基地打爆。t在艰难守卫基地同时,反投z,不断扫荡z分基,2z更是4次更换主基地,t几乎输掉游戏,终于在65分钟,以3z发出赞叹后,退出游戏而结束战斗。录像紧张刺激,一直坚持终于获得胜利,此录像不失为星际初学者的范本。.rep
    它的文件名(不包括后缀)字符数为147个,其中中文字符为136个,它的中文字符的长度就有272字节了。它就是我用下载软件下载时起的名字。
2018-11-30 16:50
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
得分:7 
全路径文件不能超过255个字符,这不是VB能解决的,而是由Windows系统限制的。

如果一个文件的全路径名超过了255个字符,那么这个文件将无法打开、删除等操作。
至于如何创建一个这样的文件,也是有办法的:
比如:在C:\下先建一个目录名:1,全路径就是C:\1\,好了,再在1下面新建一个文件,命名为A…(中间省略248个A。)…A.TXT,然后返回C:\下面,把1目录名修改成一个看起正常一点的目录名"MyTest",然后再进到C:\MyTest下面,双击那个文件名超长的文件,就可以见到效果了。

VB QQ群:47715789
2018-11-30 18:19
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
得分:0 
如果超长名字的那个是目录名,那么那个目录下的文件也成了不可见的了。

VB QQ群:47715789
2018-11-30 18:20
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
试了一下, 超长目录下连新建一个文件都办不到。

我建的目录为:D:\SS...S\  一共 250 个S 。。。。
并且还是使用 \\?\D:\SSS..S\ 这个字符串建立的,不带前缀,连 250个S都直接报错。
最大路径长度

---------------------------
在Windows API中,路径的最大长度为MAX_PATH,MAX_PATH被定义为260。一个路径的结构如下所示:

|盘符|冒号|反斜杠|被反斜杠所划分的若干部分|NUL(‘\0’)|,例如:D:\<256 chars>NUL.

Note:Windows API中的函数将”/”转换成”\”,使之成为NT风格名字的一部分。


许多API函数的Unicode版本允许最大长度大约为32000个字符的路径,这种路径的每个部分最长由255个字符组成。(The Unicode versions of several functions permit a maximum path length of approximately 32,000 characters composed of components up to 255 characters in length)。要指定这种路径,需要使用”\\?\”作为前缀。

NOTE:最大的路径长度:32000字符是一个大概的数字,因为”\\?\”前缀能够扩展为一个更长的字符串,并且这个扩展在总长度中也被计算。

例如:”\\?\D:\<path>”。要指定这样一个UNC路径,使用”\\?\UNC\”前缀。例如:”\\?\UNC\<server>\<share>”。这些前缀本身不作为路径的一部分。它们表示被传递给系统的路径应该做一些最小限度的变化,这意味着不能使用斜杠(/)来表示路径分隔符,并且不能使用一个点号(.)来代表当前路径。同时,带有”\\?\”前缀的路径不能使用相对路径。相对路径被限制在MAX_PATH个字符。

当使用API创建一个目录时,指定的路径不能太长导致不能附加一个8.3格式的文件名。也就是说目录名字不能超过MAX_PATH减去12。

授人于鱼,不如授人于渔
早已停用QQ了
2018-11-30 20:58



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-491446-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034189 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved