以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 指定的路径或文件名太长 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=131515) |
-- 作者:淡月斜阳 -- 发布时间:2019/2/28 12:21:00 -- 指定的路径或文件名太长 For Each File As String In FileSys.GetFiles(FPath) Application.DoEvents \'终止执行 If GetFileEnable = 0 Then : Return 0 : End If Dim ifo As new FileInfo(file) Dim r1 As DataRow If SameNameEnable=1 Then \'允放同名 r1 = tb.DataTable.Find("文件名=\'" & Ifo.Name & "\' and 路径=\'" & Ifo.Path & "\'") Else \'不允许同名 r1= tb.DataTable.Find("文件名=\'" & Ifo.Name & "\'") End If \'如果表中已存在记录,或,扩展名不匹配,则跳过. Vars("FileCounts")=Vars("FileCounts")+1 \'遍历的文件数 If r1 IsNot Nothing OrElse Array.indexof(FExtensions, ifo.Extension.ToLower) < 0 Then StatusBar.Message2= "进度:" & Ifo.Name Continue For End If Dim r As Row=tb.AddNew Dim max As String = tb.DataTable.Compute("max(id)") Dim idx As Integer \'ID赋值 If max > "" Then idx =Cint( max.SubString(3,6)) + 1 Else idx = 1 End If r("ID")="BH-" & Format(idx,"000000") r("文件名")=ifo.Name r("后缀名")=ifo.Extension r("大小")= CInt(ifo.Length/1024/1024) r("路径")=Ifo.Path r("创建时间")=ifo.CreationTime r("上次修改时间")=Ifo.LastWriteTime r("上次访问时间")=Ifo.LastAccessTime If UpdateScreenEnable = 0 Then \'是否即时保存,是 r.Save End If Vars("FileCount")=Vars("FileCount")+1 \'合规的文件数 Next 报错:指定的路径或文件名太长,或两者都太长,完全限定文件名必须少于260个字符,并且目录名必须少于248个字符。 |
-- 作者:有点甜 -- 发布时间:2019/2/28 12:28:00 -- msgbox(FPath)
msgbox(file)
分别弹出什么?
报错的意思是,你设置的文件的路径,如 d:\\test.jpg 超过了248个字符,就会报错。 |
-- 作者:淡月斜阳 -- 发布时间:2019/2/28 12:33:00 -- 这个函数是递归的。 有些文件是由系统或其他文件创建的,路径很长。 怎么屏蔽这个报错,直接跳过去,进入下一循环
|
-- 作者:有点甜 -- 发布时间:2019/2/28 12:35:00 -- 以下是引用淡月斜阳在2019/2/28 12:33:00的发言:
这个函数是递归的。 有些文件是由系统或其他文件创建的,路径很长。
怎么屏蔽这个报错,直接跳过去,进入下一循环
那就是你递归代码写错了导致的。
1、你可以用try catch
http://www.foxtable.com/webhelp/scr/2070.htm
2、具体做个出错的例子发上来测试 |
-- 作者:淡月斜阳 -- 发布时间:2019/2/28 12:40:00 -- 函数递归也没错,正常情况不报错。 如果指定的获取文件夹,名称太长,比如有些游戏软件,它的文件夹或文件名很长,就会报错。 或者是指到C盘,windows下的。
|
-- 作者:有点甜 -- 发布时间:2019/2/28 12:58:00 -- 以下是引用淡月斜阳在2019/2/28 12:40:00的发言:
函数递归也没错,正常情况不报错。 如果指定的获取文件夹,名称太长,比如有些游戏软件,它的文件夹或文件名很长,就会报错。
或者是指到C盘,windows下的。
1、弹出合成的字符是否正确
msgbox(FPath)
msgbox(file)
2、操作系统的文件路径,是不会超过248个字符的。 |