golang生成vcf通訊錄格式文件詳情
前言:
vcf文件:?VCF是通訊錄格式文件,一般需要用手機(jī)通訊錄導(dǎo)入導(dǎo)出的文件格式都是vcf格式。?
目的:?如果你是賣(mài)房銷(xiāo)售,或者你是做什么推銷(xiāo)的,你可以生成同城的手機(jī)號(hào),一個(gè)個(gè)打電話(huà)推銷(xiāo)。?
1.源碼?
package number
/*
@Time : 2021/12/22 17:44
@Author :dengfeng_hu
@File : phone
@Software: GoLand
*/
import (
"bufio"
"fmt"
"io"
"os"
"strconv"
"strings"
"time"
)
const (
inputFilePath = "D:/phone.txt"
fileName = "洛陽(yáng)"
last = "36"
fileSize = 5
outputPath = "D://phoneNumber"
)
func getNum(fileName string) int {
var num = 1
for {
if _,err:=os.Stat("D://phoneNumber/" + fileName + strconv.Itoa(num)+".vcf");
os.IsNotExist(err){
return num
}
num++
}
}
func Exe() {
mid := read()
for i:=0;i<len(mid);i=i+5{
var subList []string
if i+fileSize<len(mid){
subList = mid[i:i+fileSize:len(mid)]
}else{
subList = mid[i:len(mid):len(mid)]
}
fmt.Println(subList)
MyTest(subList,fileName,last)
}
}
func MyTest(mid []string,fileName string,last string){
num := getNum(fileName)
file, err := os.OpenFile(outputPath+"/" + fileName +strconv.Itoa(num) +".vcf", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err != nil {
fmt.Println("文件打開(kāi)失敗", err)
return
}
//及時(shí)關(guān)閉file句柄
defer file.Close()
write := bufio.NewWriter(file)
count:=1
for i := 0;i<len(mid);i++{
for j := 0;j<100;j++{
phoneNumber := strings.ReplaceAll(mid[i],"\r\n","") + fmt.Sprintf("%02d", j) + last
makeNumber(phoneNumber,write,strconv.Itoa(count))
count++
}
}
makeNumber("15804299051",write,strconv.Itoa(count))
write.Flush()
fmt.Println("文件創(chuàng)建成功,時(shí)間:"+time.Now().Format("2006-01-02 15:04:05"))
}
func makeNumber(num string,w *bufio.Writer,index string){
w.WriteString("BEGIN:VCARD" + "\r\n")
w.WriteString("VERSION:3.0" + "\r\n")
w.WriteString("FN;CHARSET=UTF-8:1" + "\r\n")
w.WriteString("N;CHARSET=UTF-8:;;" + "A"+index +";;" + "\r\n")
w.WriteString("TEL;TYPE=CELL:" + num + "\r\n")
w.WriteString("END:VCARD" + "\r\n")
}
func read() []string{
var mid []string
f, err := os.Open(inputFilePath)
if err != nil {
panic(err)
}
defer f.Close()
rd := bufio.NewReader(f)
for {
line, err := rd.ReadString('\n') //以'\n'為結(jié)束符讀入一行
if err != nil || io.EOF == err {
break
}
mid = append(mid,line)
}
fmt.Println("mid size:" + strconv.Itoa(len(mid)))
fmt.Println("mid " )
fmt.Println(mid)
return mid
}2.源碼解析

inoputFilePath是輸入文件,也就是你想生成哪個(gè)城市的電話(huà)號(hào)的前六位。last是后兩位。
outputPath是生成文件目錄
比如188**23,后兩位就是23,fileSize是文件號(hào)碼數(shù)量。5代表一個(gè)文件500個(gè)電話(huà)號(hào)


文件來(lái)源直接百度搜。比如洛陽(yáng)188查號(hào)吧


查好了復(fù)制進(jìn)去即可。
3.運(yùn)行結(jié)果

到此這篇關(guān)于golang生成vcf通訊錄格式文件詳情的文章就介紹到這了,更多相關(guān)golang生成vcf格式文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一文帶你感受Go語(yǔ)言空結(jié)構(gòu)體的魔力
在?Go?語(yǔ)言中,有一種特殊的用法可能讓許多人感到困惑,那就是空結(jié)構(gòu)體,本文將對(duì)Go空結(jié)構(gòu)體進(jìn)行詳解,準(zhǔn)備一杯你最喜歡的飲料或茶,隨著本文一探究竟吧2023-05-05
Goland遠(yuǎn)程連接Linux進(jìn)行項(xiàng)目開(kāi)發(fā)的實(shí)現(xiàn)
有的時(shí)候我們的開(kāi)發(fā)代碼要在linux服務(wù)器上運(yùn)行,本文主要介紹了Goland遠(yuǎn)程連接Linux進(jìn)行項(xiàng)目開(kāi)發(fā)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06
Golang中調(diào)用deepseekr1的教程詳解
這篇文章主要為大家詳細(xì)介紹了Golang中調(diào)用deepseekr1的相關(guān)教程,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的小伙伴可以了解下2025-02-02
詳解如何使用go-acme/lego實(shí)現(xiàn)自動(dòng)簽發(fā)證書(shū)
這篇文章主要為大家詳細(xì)介紹了如何使用?go-acme/lego?的客戶(hù)端或庫(kù)完成證書(shū)的自動(dòng)簽發(fā),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03
解決goxorm無(wú)法更新值為默認(rèn)值的問(wèn)題
這篇文章主要介紹了解決goxorm無(wú)法更新值為默認(rèn)值的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12

