目前,我正在学习如何一起去(或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