面试题答案
一键面试-
步骤:
- 打开源文本文件,使用
os.Open
函数,它返回一个*os.File
和一个错误。如果打开文件失败,需要处理错误。 - 读取源文件内容,可以使用
ioutil.ReadAll
函数(该函数来自io/ioutil
包,在Go 1.16之前常用)或者os.ReadFile
函数(Go 1.16及之后推荐)。这两个函数都会返回读取的字节切片和错误,如果读取失败,要处理错误。 - 将读取的字节切片内容转为字符串,并进行大写处理,使用
strings.ToUpper
函数(来自strings
包)。 - 打开目标文件,使用
os.Create
函数创建一个新文件,如果文件已存在会覆盖它,该函数返回一个*os.File
和一个错误。如果创建文件失败,需要处理错误。 - 将处理后的内容写入目标文件,使用
io.WriteString
函数(来自io
包),它接收一个io.Writer
接口类型和要写入的字符串,*os.File
实现了io.Writer
接口。写入操作会返回写入的字节数和错误,如果写入失败,要处理错误。 - 关闭源文件和目标文件,使用
file.Close
方法,关闭文件操作也可能返回错误,需要处理。
- 打开源文本文件,使用
-
代码实现:
package main
import (
"fmt"
"io"
"os"
"strings"
)
func main() {
// 打开源文件
sourceFile, err := os.Open("source.txt")
if err!= nil {
fmt.Printf("无法打开源文件: %v\n", err)
return
}
defer sourceFile.Close()
// 读取源文件内容
content, err := io.ReadAll(sourceFile)
if err!= nil {
fmt.Printf("无法读取源文件: %v\n", err)
return
}
// 转为大写
upperContent := strings.ToUpper(string(content))
// 创建目标文件
targetFile, err := os.Create("target.txt")
if err!= nil {
fmt.Printf("无法创建目标文件: %v\n", err)
return
}
defer targetFile.Close()
// 写入目标文件
_, err = io.WriteString(targetFile, upperContent)
if err!= nil {
fmt.Printf("无法写入目标文件: %v\n", err)
return
}
fmt.Println("内容已成功处理并写入目标文件")
}
上述代码实现了在Go语言中读取一个文本文件内容,转为大写后写入另一个文件。请确保运行代码的目录下存在source.txt
文件,并且有相应的读写权限。如果使用Go 1.16及之后版本,io.ReadAll
可以替换为os.ReadFile
,示例如下:
package main
import (
"fmt"
"io"
"os"
"strings"
)
func main() {
// 读取源文件内容
content, err := os.ReadFile("source.txt")
if err!= nil {
fmt.Printf("无法读取源文件: %v\n", err)
return
}
// 转为大写
upperContent := strings.ToUpper(string(content))
// 创建目标文件
targetFile, err := os.Create("target.txt")
if err!= nil {
fmt.Printf("无法创建目标文件: %v\n", err)
return
}
defer targetFile.Close()
// 写入目标文件
_, err = io.WriteString(targetFile, upperContent)
if err!= nil {
fmt.Printf("无法写入目标文件: %v\n", err)
return
}
fmt.Println("内容已成功处理并写入目标文件")
}