本文主要介紹了Go語言中文件讀寫的相關(guān)操作。
成都創(chuàng)新互聯(lián)專注于呼蘭網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供呼蘭營(yíng)銷型網(wǎng)站建設(shè),呼蘭網(wǎng)站制作、呼蘭網(wǎng)頁設(shè)計(jì)、呼蘭網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造呼蘭網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供呼蘭網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
文件是什么?
計(jì)算機(jī)中的文件是存儲(chǔ)在外部介質(zhì)(通常是磁盤)上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。
os.Open() 函數(shù)能夠打開一個(gè)文件,返回一個(gè) *File 和一個(gè) err 。對(duì)得到的文件實(shí)例調(diào)用 close() 方法能夠關(guān)閉文件。
為了防止文件忘記關(guān)閉,我們通常使用defer注冊(cè)文件關(guān)閉語句。
Read方法定義如下:
它接收一個(gè)字節(jié)切片,返回讀取的字節(jié)數(shù)和可能的具體錯(cuò)誤,讀到文件末尾時(shí)會(huì)返回 0 和 io.EOF 。 舉個(gè)例子:
使用for循環(huán)讀取文件中的所有數(shù)據(jù)。
bufio是在file的基礎(chǔ)上封裝了一層API,支持更多的功能。
io/ioutil 包的 ReadFile 方法能夠讀取完整的文件,只需要將文件名作為參數(shù)傳入。
os.OpenFile() 函數(shù)能夠以指定模式打開文件,從而實(shí)現(xiàn)文件寫入相關(guān)功能。
其中:
name :要打開的文件名 flag :打開文件的模式。 模式有以下幾種:
perm :文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04,w(寫)02,x(執(zhí)行)01。
CFileFindff;CStringszName=dir;if(szName.Right(1)!="\\"){szName+="\\";}szName+="*.*";BOOLres=ff.FindFile(szName);while(res){res=ff.FindNextFile();if(!ff.IsDots())//目錄是文件夾{//如果是一個(gè)子目錄,用遞歸繼續(xù)往深一層找TravelDir(dir+"\\"+ff.GetFileTitle());}elseif(!ff.IsDirectory()!ff.IsDots())//到達(dá)最低層的文件{CStringfileName=ff.GetFileName();}}}ff.Close();//關(guān)閉MessageBox(fileName);
1. cd /home/www
find . -type f -print0 | xargs -0 sed -i 's/subdomainA.example.com/subdomainB.example.com/g'
UPD。
-print0(GNU只找到)講述,而不是空白找到空字符(\\ 0)作為輸出之間的分隔符找到。這是一個(gè)更安全的選擇,如果你的文件可以包含空格或其它特殊字符。它是-print0找到,如果-(-0是需要在xargs的)或xargs的。
2.
find /home/ CodeGo.net -type f -exec \
sed -i 's/subdomainA\.example\.com/subdomainB.example.com/g' {} +
相較于這里其他的答案,這是簡(jiǎn)單的比大多數(shù)sed的,而不是perl,它是原來的問題問什么。
3.
cd /home/ CodeGo.net find . -type f -print0 |
xargs -0 perl -i.bak -pe 's/subdomainA\.example\.com/subdomainB.example.com/g'
4.
我只是需要這一點(diǎn) CodeGo.net,不滿意的可用實(shí)例的速度。所以,我與我自己的:
cd /var/ CodeGo.net ack-grep -l --print0 subdomainA.example.com | xargs -0 perl -i.bak -pe 's/subdomainA\.example\.com/subdomainB.example.com/g'
ACK-grep的是找到相關(guān)的文件非常有效的。更換?145 000檔案輕而易舉,而其他花了這么長(zhǎng)時(shí)間我不能等到他們完成。
5.
find /home/ CodeGo.net -type f -exec perl -i.bak -pe 's/subdomainA\.example\.com/subdomainB.example.com/g' {} +
找到/-F型將列出/所有文件(及其子目錄)。
該“-exec的”標(biāo)志告訴發(fā)現(xiàn)運(yùn)行在每個(gè)文件中找到。
Perl的i.bak-PE的/ subdomainA。 {} +
運(yùn)行上的文件(許多在該“{}”被替換的文件
在年底的+告訴找建1命令很多
從查找手冊(cè)頁:“行是建立在很多的方式,
xargs的建行。“
它可以實(shí)現(xiàn)你的目標(biāo)xargs的-0,或-print0。
。
6.
最簡(jiǎn)單的解決方案是,即:
sed -i '' -e 's/subdomainA/subdomainB/g' $(find /home/ CodeGo.net -type f)
注意:-i ''解決問題的OSXsed: 1: "...": invalid command code .注:如果有太多要處理的文件,你會(huì)得到Argument list too long。解決方法-使用find -exec或xargs上述解決方案。
7.
更簡(jiǎn)單的方法是在下面的行
find /home/ CodeGo.net -type f|xargs perl -pi -e 's/subdomainA\.example\.com/subdomainB.example.com/g'
8.
您還可以:
搜索和替換查找和編輯
(那里還設(shè)有一個(gè)測(cè)試模式,通過-t標(biāo)志)
9.
試試這個(gè):
sed -i 's/subdomainA/subdomainB/g' `grep -ril 'subdomainA' *`
10.
更改多個(gè)文件(保存?zhèn)浞莸? BAK):
perl的-P-I-E“S / \\|/ X / G”*
將所有文件在目錄和替換“|”,其中x
所謂的“Perl的pie”(容易的pie)
11.
#!/usr/local/bin/bash -x
find * /home/ CodeGo.net f | while read files
do
sedtest=$(sed -n '/^/,/$/p' "${files}" | sed -n '/subdomainA/p')
if [ "${sedtest}" ]
then
sed s'/subdomainA/subdomainB/'g "${files}" "${files}".tmp
mv "${files}".tmp "${files}"
fi
done
網(wǎng)頁名稱:go語言遞歸查看文件 go語言查詢數(shù)據(jù)庫(kù)
鏈接地址:http://m.newbst.com/article32/dosjgsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、服務(wù)器托管、軟件開發(fā)、面包屑導(dǎo)航、網(wǎng)站排名、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)