当前位置: 首页 > 面试题库 >

如何阅读文本文件?

公孙阳羽
2023-03-14
问题内容

我正在尝试读取“ file.txt”,然后使用Golang将内容放入变量中。这是我尝试过的…

package main

import (
    "fmt"
    "os"
    "log"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Print(file)
}

文件已成功读取,并且从 os.Open 返回的返回类型为 * os.File


问题答案:

这取决于您要执行的操作。

file, err := os.Open("file.txt")
fmt.print(file)

它输出&{0xc082016240}的原因是因为您正在打印文件描述符(*os.File)的指针值,而不是文件内容。要获取文件内容,可以READ从文件描述符中获取。

要将所有文件内容(以字节为单位)读取到内存, ioutil.ReadAll

package main

import (
    "fmt"
    "io/ioutil"
    "os"
    "log"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()


  b, err := ioutil.ReadAll(file)
  fmt.Print(b)
}

但是有时,如果文件很大,则仅读取块可能会提高内存效率:缓冲区大小,因此可以使用io.Reader.Readfrom 的实现*os.File

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()


    buf := make([]byte, 32*1024) // define your buffer size here.

    for {
        n, err := file.Read(buf)

        if n > 0 {
            fmt.Print(buf[:n]) // your read buffer.
        }

        if err == io.EOF {
            break
        }
        if err != nil {
            log.Printf("read %d bytes: %v", n, err)
            break
        }
    }

}

否则,您也可以使用标准的util软件包:bufio,尝试Scanner。A Scanner使用令牌:分隔符读取文件。

默认情况下,扫描程序通过换行符使令牌前进(当然,您可以自定义扫描程序应如何对文件进行令牌化,可以从bufio测试中了解)。

package main

import (
    "fmt"
    "os"
    "log"
    "bufio"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)

    for scanner.Scan() {             // internally, it advances token based on sperator
        fmt.Println(scanner.Text())  // token in unicode-char
        fmt.Println(scanner.Bytes()) // token in bytes

    }
}

最后,我还想向您推荐这个很棒的网站:go-lang file
cheatsheet
。它包含了与在go-
lang中处理文件有关的几乎所有内容,希望您会发现它有用。



 类似资料:
  • 问题内容: 我想从文本文件中读取文本。在下面的代码中,发生异常(这意味着它进入了该块)。我将文本文件放在应用程序文件夹中。我应该在哪里放置此文本文件()以便正确阅读? 问题答案: 我假设你的文本文件在SD卡上 //Don’t hardcode “/sdcard” File sdcard = Environment.getExternalStorageDirectory(); //Get the t

  • 在上一章中,我们已经了解了如何将文本添加到现有PDF文档中。 在本章中,我们将讨论如何从现有PDF文档中读取文本。 从现有PDF文档中提取文本 提取文本是PDF框库的主要功能之一。 您可以使用PDFTextStripper类的getText()方法提取文本。 此类提取给定PDF文档中的所有文本。 以下是从现有PDF文档中提取文本的步骤。 第1步:加载现有PDF文档 使用PDDocument类的静态

  • 我试图通过创建一个函数来编写一个简单的文本文件阅读器,该函数接受文件的路径并将每行文本转换为char数组,但它不起作用。 这里出了什么问题? 从以前的修订版更改了一点代码后,这似乎仍然不起作用,现在它给我一个异常101。 我在Firefox上测试过这个功能,它可以工作,但在Google Chrome上它就是不工作,它一直给我一个异常101。我如何让它不仅适用于Firefox,还适用于其他浏览器(尤

  • 请问代码中的 metadatas["auth"] 是什么..

  • 问题内容: 我想读取一个包含空格分隔值的文本文件。值是整数。如何读取并将其放入数组列表? 这是文本文件内容的示例: 我想将它包含在arraylist中。如何用Java做到这一点? 问题答案: 你可以用来将文本文件的所有行都放入。 教程:基本文件读取,写入和创建文本文件 你可以用来基于正则表达式拆分部分。 教程:数字和字符串>字符串>操纵字符串中的字符 你可以使用将转换为。 教程:数字和字符串>字符

  • 问题内容: 我想从网页上阅读文字。我不想获取网页的HTML代码。我发现此代码: 但是此代码为我提供了网页的HTML代码。我想在此页面中获取全文。如何使用Java做到这一点? 问题答案: 您可能想要看看jsoup: 本示例是他们网站上的摘录。