明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 6997|回复: 15

第八章 文件和目录函数

  [复制链接]
发表于 2012-11-3 10:14 | 显示全部楼层 |阅读模式
第八章 文件和目录函数
Visual LISP提供的最有用的函数是文件和目录函数。这些函数集可用于访问和修改文件属性,以及列出指定文件夹中的文件及文件夹。使用这些函数的一个例子,是将其用于对话框的列表框的环境中。

可能你喜欢在列表框中显示图纸文件清单,而不显示其扩展名(这样的名称会短一些)。就可结合目录列表框和vl_filename-base函数来实现,如下所示:
(mapcar ‘vl-filename-base (vl-directory-files pathname “*.dwg”))

这样将返回名称的列表,如(“图形1”“图形2”…)。注意在这个例子中并没有提供错误检查。如果(vl-directory-files)函数返回nil,其余的语句就会因出错而崩溃。该例只是用来证明这些函数是如何相结合并用于使文件和目录的信息更容易使用。

(vl-file-size filename)
以整数形式返回filename的字节数。如果没找到文件名,就返回nil。

参数:
Filename 字符串,指要查询文件的名称。

示例:
(vl-file-size “c:\\myfile1.txt”); 返回 125523 (大约 124 Kb)

(vl-file-copy source-filename target-filename [append])
从源位置(source-filename)复制文件到目标位置(target-filename)。如果append为非nil,同时目标文件存在,源文件就会被添加到已存在的目标文件。如果目标文件存在而append为nil,该文件将不被复制同时返回值为nil。如果成功,将返回整数值。

参数:
Source-filename 被复制文件的名称,如果文件不在默认的搜索路径中,则该文件名必须包含完整的路径位置。
Target-filename 源文件要复制到的目标名称。如果目标路径未指定,则使用默认的工作目录位置。
Append (可选)如果是非nil,代表如果目标文件存在,源文件将会被附加到目标文件上去。

示例:
(vl-file-copy “c:\\myfile1.txt” “c:\\mycopy.txt”)
(vl-file-copy “c:\\myfile2.txt” “c:\\mycopy.txt” T); 添加目录文件


(vl-file-delete filename)
删除文件名。如果成功返回T,否则返回nil。

参数:
Filename 字符串,指要删除的文件的名称。

(vl-file-rename old-name new-name)
重命名现有的文件,由old-name重命名为new-name。如果成功返回T,否则返回nil。

参数:
Old-Name 字符串,指现有文件的名称。
New-Name 字符串,指重命名后的文件名称。

(vl-file-directory-p filename)
如果filename是目录文件夹名称则返回T,如果filename实际上是一个文件或根本不存在,则返回nil。

(vl-file-systime filename)
返回文件最后修改的日期和时间值列表。返回的列表为(年 月 星期 日  时 分 秒)的格式。

(vl-filename-base filename)
返回不带路径和扩展名返回基本文件名。

参数:
Filename 字符串,指文件名,可带或不带路径和扩展名。

示例:
(vl-filename-base “c:\\myfiles\\drawing1.dwg”)
返回“drawing1”
(vl-filename-base “drawing1.dwg”)
返回“drawing1”


(vl-filename-directory filename)
从指定的filename字符串返回目录或路径前缀值。

参数:
Filename 字符串,指包含路径的文件名。

示例:
(vl-filename-directory “c:\\dwgfiles\\working\\drawing1.dwg”)
返回: “c:\\dwgfiles\\working”


(vl-filename-extension filename)
返回给定文件名字符串的扩展名。

参数:
Filename 字符串,指文件名称。

示例:
(vl-filename-extension “c:\\myfiles\\drawing1.dwg”)
返回 “dwg”


(vl-filename-mktemp [pattern directory extension])
创建一个用于临时文件的独特文件名。返回代表文件名称的字符串,格式为:directory\base<XXX><.extension>。其中base多达5个字符,由pattern中取得,XXX是一个3字符的独特组合。

所有在VLISP会话中由vl-filename-mktemp生成的文件名都会在你退出VLISP会话时被删除。

参数:
Pattern 字符串,包含了文件名样式;如果nil或缺省,vl-filename-mktemp就用“$VL~~”。
Directory 字符串,临时文件目录的名称;如果nil或缺省,vl-filename-mktemp就在以下顺序中选择一个目录:
■如果在pattern已指定目录,就用它。
■在TMP环境变量中指定的目录。
■在TEMP环境变量中指定的目录。
■当前目录。
Extension 字符串,指定给文件的扩展名;如果nil或缺省,vl-filename-mktemp使用pattern中的扩展名部分(有可能是空字符串)。

示例:
(vl-filename-mktemp)
"C:\\TMP\\$VL~~004"
(vl-filename-mktemp "myapp.del")
"C:\\TMP\\MYAPP005.DEL"
(vl-filename-mktemp "c:\\acad2002\\myapp.del")
"C:\\ACAD2002\\MYAPP006.DEL"
(vl-filename-mktemp "c:\\acad2002\\myapp.del")
"C:\\ACAD2002\\MYAPP007.DEL"
(vl-filename-mktemp "myapp" "c:\\acad2002")
"C:\\ACAD2002\\MYAPP008"
(vl-filename-mktemp "myapp" "c:\\acad2002" ".del")
"C:\\ACAD2002\\MYAPP00A.DEL"


(vl-directory-files path pattern [mode])
按照不同的模式,返回文件或子文件夹的列表。

参数:
Path 字符串,指要查询的路径名。
Pattern 字符串,指要查询文件。可以包含通配符。如果不指定或nil,则使用“*.*”
Mode (可选)整数。以下其中一个…
-1 = 只列出目录名
0 =  列出文件及目录(未指定时的默认值)
1 =  只列出文件

示例:
命令: (vl-directory-files “c:\\dwgfiles\\Working” “*.dwg”)
(“drawing1.dwg” “drawing2.dwg” . . .)
命令: (vl-directory-files “c:\\dwgfiles” nil -1)
(“.” “..” “Finished” “Working”)
命令: (vl-directory-files “c:\\dwgfiles” nil 1)
nil




该贴已经同步到 明经通道的微博
发表于 2023-10-23 10:21 | 显示全部楼层
还不如直接用个网盘啥的   感觉压缩包拆分是不是解压有概率问题呀还不如直接用个网盘啥的   感觉压缩包拆分是不是解压有概率问题呀
发表于 2023-4-8 16:41 | 显示全部楼层
关于文件及文件处理的函数接触的不少  这章节感觉轻松不少
发表于 2017-10-12 15:36 | 显示全部楼层
这个是很实用的一些函数
发表于 2012-11-3 11:36 | 显示全部楼层
发表于 2012-11-3 14:08 | 显示全部楼层
谢谢老大!
发表于 2012-11-6 08:00 | 显示全部楼层
本帖最后由 东北-水地暖-温 于 2012-11-6 08:28 编辑

老大,多谢!渐入佳境、登堂入室、越来越好!
希望能在动态绘图的grread等命令和反应器上多用笔墨哦!那才是绘图的乐之所在。
发表于 2012-11-6 08:45 | 显示全部楼层
东北-水地暖-温 发表于 2012-11-6 08:00
老大,多谢!渐入佳境、登堂入室、越来越好!
希望能在动态绘图的grread等命令和反应器上多用笔墨哦!那才 ...

反应器是11章里有很详细的描述。
grread属于AutoLISP范畴。
发表于 2012-11-6 12:03 | 显示全部楼层
如果我写,就不拘于原著,而是从功能应用分类。学以致用嘛。
发表于 2012-11-27 21:29 | 显示全部楼层
看到第八章啦~学习了很多,在此表示感谢,尽管有些迟,老大您辛苦了。
发表于 2012-11-27 21:29 | 显示全部楼层
看到第八章啦~学习了很多,在此表示感谢,尽管有些迟,老大您辛苦了。
发表于 2012-11-27 21:30 | 显示全部楼层
看完啦第八章啦,学习了很多,在此表示感谢(尽管有些迟),老大您辛苦啦~谢谢
发表于 2012-11-29 08:58 | 显示全部楼层
学习中,真是好资料啊,老大辛苦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 14:28 , Processed in 0.369261 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表