通用函数 文本文件操作通用函数

2008-12-19 19:19 阅读(?)评论(0)

通用函数 文本文件操作通用函数.lsp


;;;文本文件操作通用函数

;;;==================================================*
;;;功能:将文本文件中的内容转换为列表                *
;;;参数:TXTFile ----文本文件名称                    *
;;;返回:如能打开文件 并且 有内容,返回内容组成的表;*
;;;      否则返回nil。                               *
;;;测试:(ZL-TXTFILE-READTOLIST "D:\\TEST.TXT")
(defun ZL-TXTFILE-READTOLIST (TXTFILE / LST_JG F TMP)
    (setq LST_JG '())
    (if	(setq F (open TXTFILE "r"))
	(progn
	    (while (setq TMP (read-line F))
		(setq LST_JG (cons TMP LST_JG))
	    )
	    (close F)
	)
    )
    ;;返回
    (reverse LST_JG)
)

;;;==================================================*
;;;功能:获取文本文件的内容的总行数                  *
;;;参数:TXTFile ----文本文件名称                    *
;;;返回:如能打开文件 并且 有内容,则返回行数;      *
;;;      否则,返回nil。
;;;测试:(ZL-TXTFILE-GETROWS "D:\\TEST.TXT")
(defun ZL-TXTFILE-GETROWS (TXTFILE / LST_TMP)
    (if	(setq LST_TMP (ZL-TXTFILE-READTOLIST TXTFILE))
	(length LST_TMP)
    )
)

;;;==================================================*
;;;功能:获取文本文件中指定行数的文本内容            *
;;;参数:TXTFile ----文本文件名称                    *
;;;      NUM     ----行号。首行为1。                 *
;;;测试:(ZL-TXTFILE-GetTxtAtNum  "D:\\TEST.TXT" 3) 
(defun ZL-TXTFILE-GETTXTATNUM (TXTFILE NUM / F TXT LST_TMP)
    ;;方法一:直接读。优点:速度快
    ;;(if(setq F (open TXTFILE "r"))
    ;;	(progn
    ;;	    (repeat NUM (read-line F))
    ;;	    (setq TXT (read-line F))
    ;;	    (close F)
    ;;	    TXT
    ;;	)
    ;;)

    ;;方法二:借用函数。速度略慢
    (if	(setq LST_TMP (ZL-TXTFILE-READTOLIST TXTFILE))
	(nth (1- NUM) LST_TMP)
    )
)


;;;==================================================*
;;;功能:获取文本文件中指定文本内容的行数(位置)      *
;;;参数:TXTFile ----文本文件名称                    *
;;;      TXT     ----字符串内容。                    *
;;;返回:如果找到,返回行号。首行行号为1。               *
;;;      否则,返回nil
;;;测试:(ZL-TXTFILE-GetNumAtTxt  "D:\\TEST.TXT" "123") 
(defun ZL-TXTFILE-GETNUMATTXT (TXTFILE TXT / LST_TMP LST_TMP2)
    (if	(and (setq LST_TMP (ZL-TXTFILE-READTOLIST TXTFILE))
	     (setq LST_TMP2 (member TXT LST_TMP))
	)
	(- (length LST_TMP) (length LST_TMP2) -1)
    )
)
;;;==================================================*
;;;                   到此结束                       *
;;;==================================================*
   阅读(?)评论(0)
 
表  情:
加载中...
 

请各位遵纪守法并注意语言文明