Golang:从多个.txt文件写入.sql文件的问题

Golang:从多个.txt文件写入.sql文件的问题,sql,file,go,system.data.sqlite,Sql,File,Go,System.data.sqlite,我编写了一个程序,创建一个.sql文件,将目录向下更改一层,读取该目录中的一组单独的.txt文件,然后将这些.txt文件中的内容写入.sql文件。它运行良好并创建了.sql文件,但它没有写入预期的内容,而是写入了一组数字(内存位置?)。我被难住了,因为如果我使用相同的变量执行fmt.Println,它会给出正确的(主要是…正在进行的工作)输出。此外,如果我将完全相同的内容写入另一个.txt文件而不是.sql文件,那么它的输出与.sql的输出不同 下面是写入.sql文件的几行代码 0000 025

我编写了一个程序,创建一个.sql文件,将目录向下更改一层,读取该目录中的一组单独的.txt文件,然后将这些.txt文件中的内容写入.sql文件。它运行良好并创建了.sql文件,但它没有写入预期的内容,而是写入了一组数字(内存位置?)。我被难住了,因为如果我使用相同的变量执行fmt.Println,它会给出正确的(主要是…正在进行的工作)输出。此外,如果我将完全相同的内容写入另一个.txt文件而不是.sql文件,那么它的输出与.sql的输出不同

下面是写入.sql文件的几行代码

0000 025e 0000 02c8 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

以下是通过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))
            }

        }

    }
}

除了忘记换行符这一事实之外,它似乎还起作用。你能用一组新的测试文件试试吗?在读写数据时,你还应该尝试使用
[]字节
,而不是在
字符串
之间转换所有内容(也许这将有助于解决你的问题)您的文本文件中的字符编码是什么?Go严格使用utf-8.just
io.Copy(dstFile,srcFile)
,没有必要为此扫描或分配任何内容。