512guy 发表于 2011-5-9 15:26:30

请教文本搜索的方法[已解决]

本帖最后由 512guy 于 2011-5-17 16:27 编辑

最近一直有一个想法,但是没有找到合理的方法!这里想请教一下达人:

比如在某一个文件夹中有一个log文件,TXT格式的;我就想如何在不打开这个文本文件的情况下,搜索指定的内容,如果存在返回True,否则返回Flase.

不知道是否有达人了解过这样的方法,请指教!等。。。

the886 发表于 2011-5-9 15:39:46

不打开怎么搜。。。

就算你用 FileRead ( "文件句柄/文件名" [, 数量] )一样要打开

StringInStr ( FileRead ( "文件句柄/文件名" [, 数量] ) ,"子字符串" [, 区分大小写 [, 出现次序 [, 开始 [, 数量]]]] )

ac5474012 发表于 2011-5-9 16:06:20

你的意思是静默吗?(就是用户看不见)
如果 是 那用命令就可以了
如果 不是 那你能告送我你要干什么事情吗?不打开一个文件而知道文件内容,据我所知只能做索引。

512guy 发表于 2011-5-9 17:11:59

请教楼上的!命令如何做?可否给一个简单例子 !

ac5474012 发表于 2011-5-9 17:27:47

$file = FileOpen("123.txt", 0)
; 检查文件是否正常打开
If $file = -1 Then
    MsgBox(0, "错误", "无法打开目标文件。")
    Exit
EndIf
; 每次读取1个字符直到文件结尾(EOF,End-Of-File) 为止
$chars = FileRead($file)
MsgBox(0, "读到的字符:", $chars)
$result = StringInStr($chars, "9");你要搜索的信息填在这里哦
MsgBox(0, "123.txt文档中是否有你要搜索的信息,0就是没有", $result)
FileClose($file)

dyd 发表于 2011-5-9 18:07:02

学习学习!!

netegg 发表于 2011-5-12 01:33:19

本帖最后由 netegg 于 2011-5-12 01:34 编辑

_filereadtoarray好像不用打开文件(或者就是函数内部处理了), 搜索内容直接用_arraysearch

Ziya 发表于 2011-5-12 09:31:19

Func _FileReadToArray($sFilePath, ByRef $aArray)
        Local $hFile = FileOpen($sFilePath, $FO_READ)
        If $hFile = -1 Then Return SetError(1, 0, 0);; unable to open the file
        ;; Read the file and remove any trailing white spaces
        Local $aFile = FileRead($hFile, FileGetSize($sFilePath))
;~         $aFile = StringStripWS($aFile, 2)
        ; remove last line separator if any at the end of the file
        If StringRight($aFile, 1) = @LF Then $aFile = StringTrimRight($aFile, 1)
        If StringRight($aFile, 1) = @CR Then $aFile = StringTrimRight($aFile, 1)
        FileClose($hFile)
        If StringInStr($aFile, @LF) Then
                $aArray = StringSplit(StringStripCR($aFile), @LF)
        ElseIf StringInStr($aFile, @CR) Then ;; @LF does not exist so split on the @CR
                $aArray = StringSplit($aFile, @CR)
        Else ;; unable to split the file
                If StringLen($aFile) Then
                        Dim $aArray =
                Else
                        Return SetError(2, 0, 0)
                EndIf
        EndIf
        Return 1
EndFunc   ;==>_FileReadToArray用打开的...

netegg 发表于 2011-5-12 14:23:40

回复 8# Ziya
嗯,回的时候没看源代码,所以才说可能内部处理了

Ziya 发表于 2011-5-12 15:58:43

嗯,其实我就是好奇真有可能"不打开文件"么...

502762378 发表于 2011-5-12 20:25:08

回复 10# Ziya


    用fileread有打开和不打开一说吗?

annybaby 发表于 2011-5-14 22:15:32

回复 1# 512guy


    都没有打开文件,你搜索什么啊??里面有什么内容都不知道,怎么比较?不打开和没有看见是两回事哦~~

chinafla 发表于 2011-5-15 16:54:57

楼上说得对

512guy 发表于 2011-5-17 16:26:22

经过研究,我已经找到解决方法了,分享如下:
通过_FileReadToArray 将文本文件中的一行行内容付给一个数组;在使用StringInStr遍历每一个数组。

512guy 发表于 2011-5-17 16:26:27

经过研究,我已经找到解决方法了,分享如下:
通过_FileReadToArray 将文本文件中的一行行内容付给一个数组;在使用StringInStr遍历每一个数组。
页: [1] 2
查看完整版本: 请教文本搜索的方法[已解决]