下面的 NewLISP 代码显示了 Win32 下文件的文件属性。但是,某些检索到的文件名中包含中文字符。当 GetFileAttributesA 函数遇到它们时,它会给我一个属性 -1。我查看了 GetFileAttributesW,但不知道如何以它识别的形式使 fname 的内容对函数可用。
如何处理这种情况?(我愿意考虑尝试另一种语言)
(define (get-archive-flag file-name)
(if (not GetFileAttributesA)
(begin
(import "kernel32.DLL" "GetFileAttributesA")
)
)
(setq fname file-name file-attrib (GetFileAttributesA (address fname)))
(append fname " " ( string file-attrib))
)
; walks a disk directory and prints all path-file names
;
(define (show-tree dir)
(if (directory dir)
(dolist (nde (directory dir))
(if (and (directory? (append dir "/" nde))
(!= nde ".") (!= nde ".."))
(show-tree (append dir "/" nde))
(println (get-archive-flag (append dir "/" nde)))
)
)
)
)
(show-tree "z:\\working files\\Cathy")