介紹
官方SDK地址
- 本專案會將官方dll編譯到可執行程式中,運行時無需考慮dll問題,
- 根據官方介紹,使用SDK前需要運行
everything程式, - 執行
go build -tag ASCII時編譯ascii相關介面,否則編譯unicode介面, - 可以參考
examples/search.go示例代碼, - 本專案主要是我用來學習window下go呼叫dll的方法,包含傳參和回傳值處理,
- 相關代碼大部分都是研究go原始碼得到的啟發,
- 特別注意,我的代碼里面有幾個使用了
go1.17才有的特性,
下面是示例代碼:
package main
import (
"fmt"
"os"
"github.com/jan-bar/es"
)
func main() {
if len(os.Args) < 2 {
fmt.Printf("usage:%s test.txt\n", os.Args[0])
return
}
err := es.EverythingSetSearch(os.Args[1])
if err != nil {
panic(err)
}
err = es.EverythingSetMax(5)
if err != nil {
panic(err)
}
// 設定好需要查詢的內容,不然后續遍歷時可能報錯
err = es.EverythingSetRequestFlags(es.EverythingRequestFileName | es.EverythingRequestPath |
es.EverythingRequestDateCreated | es.EverythingRequestDateModified | es.EverythingRequestDateAccessed |
es.EverythingRequestSize)
if err != nil {
panic(err)
}
// 定好排序規則
err = es.EverythingSetSort(es.EverythingSortDateModifiedAscending)
if err != nil {
panic(err)
}
// 開始查詢
fmt.Println("EverythingQuery:", es.EverythingQuery(true))
// 得到查詢結果個數
num, err := es.EverythingGetNumResults()
fmt.Println("EverythingGetNumResults", num, err)
for i := uint32(0); i < num; i++ {
fmt.Println("---------------------------------------------------")
s, err := es.EverythingGetResultSize(i)
fmt.Printf("FileSize:[%d],%v\n", s, err)
p, err := es.EverythingGetResultFullPathName(i)
fmt.Printf("FullPathName:[%s],%v\n", p, err)
p, err = es.EverythingGetResultFileName(i)
fmt.Printf("FileName:[%s],%v\n", p, err)
t, err := es.EverythingGetResultDateCreated(i)
fmt.Printf("DateCreated:[%s],%v\n", t, err)
t, err = es.EverythingGetResultDateModified(i)
fmt.Printf("DateModified:[%s],%v\n", t, err)
t, err = es.EverythingGetResultDateAccessed(i)
fmt.Printf("DateAccessed:[%s],%v\n", t, err)
}
}
<style>.qm_point{color:#6DA47D;font-size:18px}.qm_a{color:#0000FF}</style>
作者:janbar
出處:https://www.cnblogs.com/janbar
本文著作權歸作者和博客園所有,歡迎轉載,轉載請標明出處,喜歡我的文章請 [關注我] 吧,
如果您覺得本篇博文對您有所識訓,可點擊 [推薦] 并 [收藏] ,或到右側 [打賞] 里請我喝杯咖啡,非常感謝,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/298842.html
標籤:其他
上一篇:MySQL索引詳細
