目前,我正在學習如何一起去(或golang)制定和我有一個奇怪的問題:轉到:串聯文件內容
我嘗試創建一個腳本的HTML文件中,爲了得到尋找所有的每個標籤的來源。 該腳本的目標是合併所有檢索到的文件。
所以,這是爲故事:現在,我能夠獲取每個JavaScript文件的內容,但...我不能將它們連接起來......
下面你可以看到我的腳本:
//Open main file
mainFilePath := "/path/to/my/file.html"
mainFileDir := path.Dir(mainFilePath)+"/"
mainFileContent, err := ioutil.ReadFile(mainFilePath)
if err == nil {
mainFileContent := string(mainFileContent)
var finalFileContent bytes.Buffer
//Start RegExp searching for JavaScript src
scriptReg, _ := regexp.Compile("<script src=\"(.*)\">")
scripts := scriptReg.FindAllStringSubmatch(mainFileContent,-1)
//For each SRC found...
for _, path := range scripts {
//We open the corresponding file
subFileContent, err := ioutil.ReadFile(mainFileDir+path[1])
if err == nil {
//And we add its content to the "final" variable
fmt.Println(finalFileContent.Write(subFileContent))
} else {
fmt.Println(err)
}
}
//Try to display the final result
// fmt.Println(finalFileContent.String())
fmt.Printf(">>> %#v", finalFileContent)
fmt.Println("Y U NO WORKS? :'(")
} else {
fmt.Println(err)
}
因此,每個fmt.Println(finalFileContent.Write(subFileContent))
顯示類似,所以我假定寫()方法正確執行。
但是fmt.Printf(">>> %#v", finalFileContent)
什麼都不顯示。絕對沒有(甚至沒有顯示「>>>」!)上面的註釋行也是如此。
有趣的是,該字符串「YU沒有工作?「(」?正確顯示...
你知道爲什麼 而且你知道如何解決這個問題
當你運行你的代碼以下版本提前感謝!
首先,感謝你的答案:) 所以,你的腳本的版本會顯示這樣的值的列表:「finalFileContent寫:6161「 最有趣的部分是代碼的結束,它現在顯示」finalFileContent Printf:0寫/ dev/stdout:winapi錯誤#8「(是的,我正在使用Windows) 經過快速研究,我沒有發現任何與此有關的東西rror ... –
KorHosik
2012-08-03 07:47:52
查看我的更新回答。 – peterSO 2012-08-03 10:13:02
你是真的,它似乎只在Windows上出錯:它完美的工作在Unbuntu上。顯然這是一個內存問題,同時試圖在Windows控制檯內顯示大量文本...我的腳本似乎工作良好,因爲'fmt.Println(len(finalFileContent.String()))'輸出一個合法的值;我無法在控制檯中顯示文本:不方便,但不重要。謝謝你的幫助! – KorHosik 2012-08-03 10:19:17