AutoLisp从入门到放弃(十二)
本章主要介绍AutoLisp中的文件操作。
一、文件操作
1、打开文件(open)
函数 | 函数功能 |
---|---|
(open filename [mode]) | 打开一个文件,返回文件指针供其他AutoLisp API调用。 |
参数说明:
- filename:要打开文件的文件名,包含文件全路径和扩展名。如果该参数没有指定文件的路径,默认为AutoCAD的启动路径。
- mode:打开方式。包含读、写和追加三种打开方式。
mode | 说明 |
---|---|
只读(r) | 打开文件用于读操作。 |
读写(w) | 打开文件用于写操作。如果filename不存在,则创建新文件并打开它。如果文件名存在,则覆盖其现有数据。传给一个已打开文件的数据,只有在用close函数关闭文件后才会真正被写入文件中。 |
追加 (a) | 打开文件用于追加操作,如果filename不存在,则创建一个新文件并打开它;如果filename存在,则打开该文件并把文件指针移到现有数据的尾部,用户写入文件的数据追加到现有数据的后面。 |
用法:
(open "D:/AutoLisp/WriteFile/info.txt" "r") ;; 指定文件一定存在,执行后结果为 #<file "D:/AutoLisp/WriteFile/info.txt">
2、读文件(read-line、read-char)
函数 | 函数说明 |
---|---|
(read-line [file-desc]) | 从键盘或已打开文件中读取行结束符前的字符串。 |
(read-char [file-desc]) | 从键盘输入缓冲区或打开文件中读入一个字符,并将该字符转换成十进制的 ASCII 码值后返回。 |
参数说明:
- file-desc:可省略。文件描述符(通过open函数获取到的文件指针,代表打开的文件。如果未指定file-desc,则表示从键盘输入缓冲区中获取输入字符。
用法:
(setq #file (open "D:/AutoLisp/WriteFile/info.txt" "r")) ;; 打开文件。
(setq #strContext (read-line #file)) ;; 文件中读出来的数据都是字符串。这里读取的是txt文件中的第一行数据。
(setq #strContext (read-char #file)) ;; 这里读取的是txt文件中的第二行的第一个字符对应的ASCII码值。
(setq #strKeyInput (read-line)) ;; 读取接下来在命令行中输入的一行文本内容。
(setq #strKeyInput (read-char)) ;; 读取接下来在命令行中输入的一个文本字符串对应的acsii码值。
3、写文件(write-line、write-char)
函数 | 函数说明 |
---|---|
(write-line string [file-desc]) | 将字符串写到屏幕上或一个已打开的文件中。 |
(write-char num [file-desc]) | 将一个字符写到屏幕上或一个已打开的文件中。 |
参数说明:
- file-desc:可省略。文件描述符(通过open函数获取到的文件指针,代表打开的文件。如果未指定file-desc,则表示输出字符串到屏幕中显示。
用法:
(setq #file (open "D:/AutoLisp/WriteFile/info.txt" "w"))
(write-line "write file test" #file)
(write-char 67 #file)
(write-line "write file test")
(write-char 67)
4、关闭文件(close)
函数 | 函数说明 |
---|---|
(close file-desc) | 关闭一个已打开的文件。 |
参数:
打开的文件的文件描述符(通过open函数获得)。如果file-desc参数有效,close函数返回nil;否则它返回一个错误信息。用close函数关闭文件后,该文件描述符并没有改变,但它已不再有效。在未关闭文件之前,添加到已打开文件中的数据并没有被真正写入文件。
用法:
(setq #file (open "D:/AutoLisp/WriteFile/info.txt" "w"))
(close #file)