我编写了一个程序,它创建一个.sql文件,将目录更改为一层,读取该目录中的一堆单独的.txt文件,然后将这些.txt文件中的内容写入.sql文件。它运行正常并创建.sql文件,但它不是写出预期的内容,而是写了一堆数字(内存位置?)。我很难过,因为如果我使用相同的变量进行fmt.Println,它会提供正确的(主要是......正在进行的工作)输出。最重要的是,如果我将完全相同的内容写入另一个.txt文件而不是.sql文件,则它的输出与.sql的输出不同。
这里有一些写入.sql文件的行
<00> 0000 025e 0000 02c8 ffff ffff ffff 0000 0061 006c 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000这是终端通过Println输出的内容以及写入.txt文件的内容(应该在.sql文件中输出的内容。
----------------------------
Employee: John_Smith
Username: john
Email: john@somecompany.com
Location: HQ-thatplace
Department: QA
Manager: Jim_Smith
----------------------------
----------------------------
Employee: John_Smith2
Username: john2
Email: john2@somecompany.com
Location: HQ-thatplace
Department: Support
Manager: Jim_Smith2
----------------------------
我很感激对此问题的任何见解,无论是语法问题,我是如何尝试使用.sql的问题,还是其他问题。谢谢!
package main
import (
"bufio"
"fmt"
"io/ioutil"
"log"
"os"
)
// readLines reads a whole file into memory
// and returns a slice of its lines.
func readLines(path string) ([]string, error) {
file, err := os.Open(path)
if err != nil {
return nil, err
}
defer file.Close()
var lines []string
scanner := bufio.NewScanner(file)
for scanner.Scan() {
lines = append(lines, scanner.Text())
}
return lines, scanner.Err()
}
func changeDirectory() []os.FileInfo {
files, _ := ioutil.ReadDir("./theList")
err := os.Chdir("./theList")
if err != nil {
panic(err)
}
return files
}
func main() {
content, err := os.Create("textToSQLOutput.sql")
if err != nil {
panic(fmt.Errorf("1: %v\n", err))
}
defer content.Close()
files, _ := ioutil.ReadDir("./theList")
changeDirectory()
for _, f := range files {
lines, err := readLines(f.Name())
if err != nil {
log.Fatal(err)
}
for _, line := range lines {
//fmt.Println(line)
if _, err = content.WriteString(line); err != nil {
panic(fmt.Errorf("2: %v\n", err))
}
}
}
}