精华内容
下载资源
问答
  • 读取
    万次阅读 多人点赞
    2022-07-11 16:38:16

    1. 基本概念介绍

    1.1 注册表

      Windows注册表是一种层级数据库,它存储了Windows操作系统以及应用的底层配置信息。内核、设备驱动程序、服务、安全帐户管理器和用户界面都可以使用注册表。注册表还允许访问计数器以分析系统性能。

      换句话说,注册表包含了Windows操作系统上安装的程序和硬件的配置信息、设置选项和其他值。例如,当安装一个应用时,一个新的子键往往会包含应用的位置、版本、启动方法,上述信息均会被添加到Windows注册表中。

    1.2 contextlib.suppress()

      该方法对应的语法为:contextlib.suppress(*exceptions)。方法返回一个上下文管理器,如果该方法被用在with 语句中,就会抑制指定的异常,然后执行with 语句外的第一条语句。

    更多相关内容
  • 开发过程中经常会遇到json数据的处理,而单独对json数据进行增删改并不方便,尤其是Geojson文件的处理,通过对网络资料的整理总结,下面介绍Java语言方法对json数据进行读取、添加、删除与修改操作。
  • C#中读取Excel表格数据实例

    热门讨论 2015-03-08 19:25:04
    用C#开发的一个读取Excel表格的Demo,无需安装office。
  • NPOI操作excel之读取、写入excel数据

    热门讨论 2015-12-05 15:17:32
    这是我用C# asp.netasp.net写的关于NPOI操作excel之读取、写入excel数据的例子,简单易懂,希望对于有帮助。
  • java 读取文件文本内容_Java读取文本文件

    万次阅读 多人点赞 2020-07-19 18:34:52
    java 读取文件文本内容There are many ways to read a text file in java. Let’s look at java read text file different methods one by one. 有许多方法可以读取Java中的文本文件。 让我们一一看一下Java读取文本...

    java 读取文件文本内容

    There are many ways to read a text file in java. Let’s look at java read text file different methods one by one.

    有许多方法可以读取Java中的文本文件。 让我们一一看一下Java读取文本文件的不同方法。

    Java读取文本文件 (Java read text file)

    There are many ways to read a text file in java. A text file is made of characters, so we can use Reader classes. There are some utility classes too to read a text file in java.

    有许多方法可以读取Java中的文本文件。 文本文件由字符组成,因此我们可以使用Reader类。 也有一些实用程序类可以读取Java中的文本文件。

    1. Java read text file using Files class

      Java使用Files类读取文本文件
    2. Read text file in java using FileReader

      使用FileReader读取Java中的文本文件
    3. Java read text file using BufferedReader

      Java使用BufferedReader读取文本文件
    4. Using Scanner class to read text file in java

      使用Scanner类读取Java中的文本文件

    Now let’s look at examples showing how to read a text file in java using these classes.

    现在,让我们看一些示例,这些示例说明如何使用这些类在Java中读取文本文件。

    Java使用java.nio.file.Files读取文本文件 (Java read text file using java.nio.file.Files)

    We can use Files class to read all the contents of a file into a byte array. Files class also has a method to read all lines to a list of string. Files class is introduced in Java 7 and it’s good if you want to load all the file contents. You should use this method only when you are working on small files and you need all the file contents in memory.

    我们可以使用Files类将文件的所有内容读入字节数组。 Files类还具有一种读取所有行到字符串列表的方法。 Files类是Java 7中引入的,如果要加载所有文件内容,则很好。 仅在处理小型文件并且需要所有文件内容在内存中时,才应使用此方法。

    String fileName = "/Users/pankaj/source.txt";
    Path path = Paths.get(fileName);
    byte[] bytes = Files.readAllBytes(path);
    List<String> allLines = Files.readAllLines(path, StandardCharsets.UTF_8);

    使用java.io.FileReader在Java中读取文本文件 (Read text file in java using java.io.FileReader)

    You can use FileReader to get the BufferedReader and then read files line by line. FileReader doesn’t support encoding and works with the system default encoding, so it’s not a very efficient way of reading a text file in java.

    您可以使用FileReader获取BufferedReader,然后逐行读取文件。 FileReader不支持编码,并且与系统默认编码一起使用,因此,这不是在Java中读取文本文件的非常有效的方法。

    String fileName = "/Users/pankaj/source.txt";
    File file = new File(fileName);
    FileReader fr = new FileReader(file);
    BufferedReader br = new BufferedReader(fr);
    String line;
    while((line = br.readLine()) != null){
        //process the line
        System.out.println(line);
    }

    Java使用java.io.BufferedReader读取文本文件 (Java read text file using java.io.BufferedReader)

    BufferedReader is good if you want to read file line by line and process on them. It’s good for processing the large file and it supports encoding also.

    如果要逐行读取文件并对其进行处理,则BufferedReader很好。 这对于处理大文件非常有用,并且还支持编码。

    BufferedReader is synchronized, so read operations on a BufferedReader can safely be done from multiple threads. BufferedReader default buffer size is 8KB.

    BufferedReader是同步的,因此可以安全地从多个线程完成对BufferedReader的读取操作。 BufferedReader的默认缓冲区大小为8KB。

    String fileName = "/Users/pankaj/source.txt";
    File file = new File(fileName);
    FileInputStream fis = new FileInputStream(file);
    InputStreamReader isr = new InputStreamReader(fis, cs);
    BufferedReader br = new BufferedReader(isr);
    
    String line;
    while((line = br.readLine()) != null){
         //process the line
         System.out.println(line);
    }
    br.close();

    使用扫描仪读取Java中的文本文件 (Using scanner to read text file in java)

    If you want to read file line by line or based on some java regular expression, Scanner is the class to use.

    如果要逐行或基于某些Java正则表达式读取文件,则使用Scanner类。

    Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace. The resulting tokens may then be converted into values of different types using the various next methods. The scanner class is not synchronized and hence not thread safe.

    扫描程序使用定界符模式将其输入分为令牌,默认情况下,该模式与空格匹配。 然后,可以使用各种下一种方法将生成的令牌转换为不同类型的值。 扫描器类未同步,因此不是线程安全的。

    Path path = Paths.get(fileName);
    Scanner scanner = new Scanner(path);
    System.out.println("Read text file using Scanner");
    //read line by line
    while(scanner.hasNextLine()){
        //process each line
        String line = scanner.nextLine();
        System.out.println(line);
    }
    scanner.close();

    Java读取文件示例 (Java Read File Example)

    Here is the example class showing how to read a text file in java. The example methods are using Scanner, Files, BufferedReader with Encoding support and FileReader.

    这是显示如何在Java中读取文本文件的示例类。 示例方法使用的是Scanner,Files,具有编码支持的BufferedReader和FileReader。

    package com.journaldev.files;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.nio.charset.Charset;
    import java.nio.charset.StandardCharsets;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    import java.util.List;
    import java.util.Scanner;
    
    public class JavaReadFile {
    
        public static void main(String[] args) throws IOException {
            String fileName = "/Users/pankaj/source.txt";
            
            //using Java 7 Files class to process small files, get complete file data
            readUsingFiles(fileName);
            
            //using Scanner class for large files, to read line by line
            readUsingScanner(fileName);
            
            //read using BufferedReader, to read line by line
            readUsingBufferedReader(fileName);
            readUsingBufferedReaderJava7(fileName, StandardCharsets.UTF_8);
            readUsingBufferedReader(fileName, StandardCharsets.UTF_8);
            
            //read using FileReader, no encoding support, not efficient
            readUsingFileReader(fileName);
        }
    
        private static void readUsingFileReader(String fileName) throws IOException {
            File file = new File(fileName);
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            String line;
            System.out.println("Reading text file using FileReader");
            while((line = br.readLine()) != null){
                //process the line
                System.out.println(line);
            }
            br.close();
            fr.close();
            
        }
    
        private static void readUsingBufferedReader(String fileName, Charset cs) throws IOException {
            File file = new File(fileName);
            FileInputStream fis = new FileInputStream(file);
            InputStreamReader isr = new InputStreamReader(fis, cs);
            BufferedReader br = new BufferedReader(isr);
            String line;
            System.out.println("Read text file using InputStreamReader");
            while((line = br.readLine()) != null){
                //process the line
                System.out.println(line);
            }
            br.close();
            
        }
    
        private static void readUsingBufferedReaderJava7(String fileName, Charset cs) throws IOException {
            Path path = Paths.get(fileName);
            BufferedReader br = Files.newBufferedReader(path, cs);
            String line;
            System.out.println("Read text file using BufferedReader Java 7 improvement");
            while((line = br.readLine()) != null){
                //process the line
                System.out.println(line);
            }
            br.close();
        }
    
        private static void readUsingBufferedReader(String fileName) throws IOException {
            File file = new File(fileName);
            FileReader fr = new FileReader(file);
            BufferedReader br = new BufferedReader(fr);
            String line;
            System.out.println("Read text file using BufferedReader");
            while((line = br.readLine()) != null){
                //process the line
                System.out.println(line);
            }
            //close resources
            br.close();
            fr.close();
        }
    
        private static void readUsingScanner(String fileName) throws IOException {
            Path path = Paths.get(fileName);
            Scanner scanner = new Scanner(path);
            System.out.println("Read text file using Scanner");
            //read line by line
            while(scanner.hasNextLine()){
                //process each line
                String line = scanner.nextLine();
                System.out.println(line);
            }
            scanner.close();
        }
    
        private static void readUsingFiles(String fileName) throws IOException {
            Path path = Paths.get(fileName);
            //read file to byte array
            byte[] bytes = Files.readAllBytes(path);
            System.out.println("Read text file using Files class");
            //read file to String list
            @SuppressWarnings("unused")
    		List<String> allLines = Files.readAllLines(path, StandardCharsets.UTF_8);
            System.out.println(new String(bytes));
        }
    
    }

    The choice of using a Scanner or BufferedReader or Files to read file depends on your project requirements. For example, if you are just logging the file, you can use Files and BufferedReader. If you are looking to parse the file based on a delimiter, you should use Scanner class.

    使用Scanner或BufferedReader或Files读取文件的选择取决于您的项目要求。 例如,如果您仅记录文件,则可以使用“文件”和“ BufferedReader”。 如果要基于定界符解析文件,则应使用Scanner类。

    Before I end this tutorial, I want to mention about RandomAccessFile. We can use this to read text file in java.

    在结束本教程之前,我想谈谈RandomAccessFile 。 我们可以使用它来读取Java中的文本文件。

    RandomAccessFile file = new RandomAccessFile("/Users/pankaj/Downloads/myfile.txt", "r");
    String str;
    
    while ((str = file.readLine()) != null) {
    	System.out.println(str);
    }
    file.close();

    That’s all for java read text file example programs.

    Java读取文本文件示例程序就这些了。

    翻译自: https://www.journaldev.com/867/java-read-text-file

    java 读取文件文本内容

    展开全文
  • 在程序开发中,经常会遇到要从外部文件中读取数据的情况,每种文件的读取方式还不尽相同,对初级开发者造成比较大的困扰。 于是,小魔龙就将常见的文件类型读取总结下来,一方面可以自己复习,另一方面也希望可以...

    推荐阅读

    大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。

    一、前言

    在程序开发中,经常会遇到要从外部文件中读取数据的情况,文件类型也比较多。

    于是,小魔龙就将常见的文件类型:Txt、Json、Xml、Excel、Csv,读取、修改、保存等常见操作代码总结下来。

    一方面可以自己复习,另一方面也希望可以帮助更多的人吧。

    这是本系列文章第一篇:
    【Unity3D读取数据】(一)Txt文档操作(创建、读取、写入、修改)
    【Unity3D读取数据】(二)Json文件操作(创建、读取、解析、修改)
    【Unity3D读取数据】(三)Xml文件操作(创建、读取、写入、修改)
    【Unity3D读取数据】(四)Excel文件操作(创建、读取、写入、修改)
    【Unity3D读取数据】(五)Csv文件操作(创建、读取、写入、修改)

    二、唠叨两句

    读取txt其实是很简单的,用File类、FileStream类、 SteamReader类、 StreamWriter类都可以读取文件。

    主要就是分为两种形式,一种是文件读取的形式,一种就是流数据的形式。

    读取txt的类很多,读取的形式也很多,有的整篇读取,有的一行一行读取。

    读取是第一步,保存数据是第二步,读取的方式也影响了保存数据的方式,如果是一行一行读取,那么就可以一行一行解析,然后保存到数据集合中,如果是整篇读取,就需要对整篇就行每行解析,然后通过分隔符就行分割保存。

    三、读取txt文档

    我们新建一个名字叫做TextRead.txt的文档,键入内容后保存。
    在这里插入图片描述
    要注意的一点是,文档格式设置为UTF-8,不然中文可能显示不太正确。

    3-1、通过TextAsset类读取文档

    先来一个最简单的读取方法:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        public TextAsset textTxt;
    
        void Start()
        {
            Debug.Log(textTxt.text);
        }
    }
    

    把文档拖到对应的卡槽中:
    在这里插入图片描述
    运行结果:
    在这里插入图片描述

    3-2、通过File类读取文件

    通过File类的ReadAllText()把文档所有内容读取下来:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string textTxt = File.ReadAllText(Application.streamingAssetsPath + "/TextRead.txt");
            Debug.Log(textTxt);
        }
    }
    

    也可以使用File类的ReadAllLines()函数,将这个文档按照一行一行进行全部读取:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string[] textTxt = File.ReadAllLines(Application.streamingAssetsPath + "/TextRead.txt");
            for (int i = 0; i < textTxt.Length; i++)
            {
                Debug.Log(textTxt[i]);
            }
        }
    }
    

    上面两个函数都各自有一个重载函数:

    public static string[] ReadAllLines(string path);
    public static string[] ReadAllLines(string path, Encoding encoding);
    public static string ReadAllText(string path, Encoding encoding);
    public static string ReadAllText(string path);
    

    可以以设定的文档格式打开文档。

    3-3、以文件流的形式读取文档

    通过IO命名空间下的FileStream类进行读取文档数据:

    这是第一种方式,通过FileStream类的实例化方法去加载文件:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            //文件流形式读取文档
            using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                byte[] bytes = new byte[fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                string str= Encoding.UTF8.GetString(bytes);
                Debug.Log(str);
            }
        }
    }
    

    还可以通过File类的OpenRead()函数加载文档:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            //文件流形式读取文档
            using (FileStream fs = File.OpenRead(Application.streamingAssetsPath + "/TextRead.txt"))
            {
                byte[] bytes = new byte[fs.Length];
                fs.Read(bytes, 0, bytes.Length);
                fs.Close();
                string str = Encoding.UTF8.GetString(bytes);
                Debug.Log(str);
            }
        }
    }
    

    仔细看,两者还是有差别的。。。

    3-4、以流形式读取文档

    通过IO命名空间下的StreamReader类以流形式读取文档:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            //流形式读取文档
            using (StreamReader sr = new StreamReader(path))
            {
                string content = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                Debug.Log(content);
            }
        }
    }
    

    还可以使用File类的OpenText()函数以流形式读取文档:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            //流形式读取文档
            using (StreamReader sr = File.OpenText(path))
            {
                string content = sr.ReadToEnd();
                sr.Close();
                sr.Dispose();
                Debug.Log(content);
            }
        }
    }
    

    注意看,还是有区别的。。。

    四、修改数据保存文档

    4-1、通过File类写入数据

    还记得怎么读取数据吗?
    File.ReadAllText()函数及ReadAllLines()函数
    那么写入数据就使用:
    File.WriteAllText()函数及ReadWriteLines()函数
    File.WriteAllText()

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            File.WriteAllText(path, "测试数据");
        }
    }
    

    ReadWriteLines()

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            string[] content = { "测试数据1", "测试数据2", "测试数据3" };
            File.WriteAllLines(path, content);
        }
    }
    

    WriteAllText()是将整个文本保存到文档中。
    ReadWriteLines()函数是将一个string数组保存到文档中。

    4-2、通过文件流的形式写入数据

    有读就有写:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            string content = "测试文档";
            //文件流形式读取文档
            using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Write))
            {
                byte[] bytes = Encoding.UTF8.GetBytes(content);
                fs.Write(bytes, 0, bytes.Length);
                fs.Close();
            }
        }
    }
    

    4-3、通过流形式写入数据

    有StreamReader类就有StreamWriter类,哎,就是这么方便:

    using System.Collections;
    using System.Collections.Generic;
    using System.IO;
    using System.Text;
    using UnityEngine;
    
    public class Demo5 : MonoBehaviour
    {
        void Start()
        {
            string path = Application.streamingAssetsPath + "/TextRead.txt";
            string content = "测试文档";
            using (StreamWriter sr = new StreamWriter(path))
            {
                sr.WriteLine(content);
                sr.Close();
                sr.Dispose();
                Debug.Log(content);
            }
        }
    }
    

    五、后言

    本篇文章讲解了使用各种方法读取文档的方式,有通过File类去读取文档,有通过文件流形式去读取文档,有通过流形式去读取文档。

    这些读取的操作都需要引入IO命名空间。

    基本所有的文档的读取方式都离开上面的几种方式,接下来分享的读取json文档、xml文档、Excel文档,基本都是用上面的几种读取方式。

    如果到后面读取不太懂的,可以在这篇文章再复习一下。

    展开全文
  • C#代码读取USB扫描枪信息

    千次下载 热门讨论 2014-09-27 10:00:03
    通过C#代码,自动读取USB扫描枪一维码到无焦点的textbox中
  • C#访问OPC读取数据

    千次下载 热门讨论 2013-05-17 17:23:03
    C#访问OPC读取数据 一般用于自动化编程
  • JAVA 读取串口数据,推荐使用串口调试工具先测试成功在使用。
  • GoLang之读取文件10种的方法

    千次阅读 2022-02-18 17:18:44
    读取文件的 10 种方法


    在这里插入图片描述

    一. 整个文件读入内存

    直接将数据直接读取入内存,是效率最高的一种方式,但此种方式,仅适用于小文件,对于大文件,则不适合,因为比较浪费内存

    1.直接指定文化名读取

    在 Go 1.16 开始,ioutil.ReadFile 就等价于 os.ReadFile,二者是完全一致的

    1.1使用os.ReadFile函数读取文件

    package main
    
    import (
        "fmt"
        "os"
    )
    
    func main() {
       //func ReadFile(name string) ([]byte, error) {}
        content, err := os.ReadFile("a.txt")
        if err != nil {
            panic(err)
        }
        fmt.Println(string(content))
    }
    

    1.2使用ioutil.ReadFile函数读取文件

    package main
    
    import (
        "io/ioutil"
        "fmt"
    )
    
    func main() {
        content, err := ioutil.ReadFile("a.txt")
        if err != nil {
            panic(err)
        }
        fmt.Println(string(content))
    }
    
    // As of Go 1.16, this function simply calls os.ReadFile.
    func ReadFile(filename string) ([]byte, error) {
        return os.ReadFile(filename)
    }
    

    2.先创建句柄再读取

    2.1使用os.OpenFile函数只读形式获取句柄

    package main
    
    import (
    "os"
    "io/ioutil"
    "fmt"
    )
    
    func main() {
        /*func Open(name string) (*File, error) {
    	return OpenFile(name, O_RDONLY, 0)
         }*/
         //Open是一个高级函数,是因为它是只读模式来打开文件
         /*也可以直接使用 os.OpenFile,只是要多加两个参数
           file, err := os.OpenFile("a.txt", os.O_RDONLY, 0)*/
        file, err := os.Open("a.txt")
        if err != nil {
            panic(err)
        }
        //func (f *File) Close() error {}
        defer file.Close()
        //func ReadAll(r io.Reader) ([]byte, error) {}
        content, err := ioutil.ReadAll(file)
        fmt.Println(string(content))
    }
    

    2.2代码讲解

    2.2.1os.File结构体

    type File struct {
    	*file // os specific
    }
    

    2.2.2os.OpenFile函数

    func OpenFile(name string, flag int, perm FileMode) (
        *File,   error) {}
    

    2.2.3io.Reader接口

    type Reader interface {
    	Read(p []byte) (n int, err error)
    }
    

    二.每次只读取一行

    一次性读取所有的数据,太耗费内存,因此可以指定每次只读取一行数据,方法有三种:
    (1)bufio.读行()
    (2)bufio.读取字节("\n")
    (3)bufio.ReadString(’\n’)
    在 bufio 的源码注释中,曾说道 bufio.ReadLine() 是低级库,不太适合普通用户使用,更推荐用户使用 bufio.ReadBytes和bufio.ReadString 去读取单行数据
    因此,这里不再介绍 bufio.读行()

    1.使用bufio.Reader结构体的ReadBytes方法读取字节数

    ReadBytes读取直到第一次遇到delim字节,返回一个包含已读取的数据和delim字节的切片。如果ReadBytes方法在读取到delim之前遇到了错误,它会返回在错误之前读取的数据以及该错误(一般是io.EOF)。当且仅当ReadBytes方法返回的切片不以delim结尾时,会返回一个非nil的错误

    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "os"
        "strings"
    )
    
    func main() {
        // 创建句柄
        fi, err := os.Open("christmas_apple.py")
        if err != nil {
            panic(err)
        }
        //func NewReader(rd io.Reader) *Reader {},返回的是bufio.Reader结构体
        r := bufio.NewReader(fi)// 创建 Reader
    
        for {
        //func (b *Reader) ReadBytes(delim byte) ([]byte, error) {}
            lineBytes, err := r.ReadBytes('\n')
            //去掉字符串首尾空白字符,返回字符串
            line := strings.TrimSpace(string(lineBytes))
            if err != nil && err != io.EOF {
                panic(err)
            }
            if err == io.EOF {
                break
            }
            fmt.Println(line)
        }
    }
    

    2.使用bufio.Reader结构体的ReadString方法读取字符串

    ReadString读取直到第一次遇到delim字节,返回一个包含已读取的数据和delim字节的字符串。如果ReadString方法在读取到delim之前遇到了错误,它会返回在错误之前读取的数据以及该错误(一般是io.EOF)。当且仅当ReadString方法返回的切片不以delim结尾时,会返回一个非nil的错误

    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "os"
        "strings"
    )
    
    func main() {
        // 创建句柄
        fi, err := os.Open("a.txt")
        if err != nil {
            panic(err)
        }
    
        // 创建 Reader
        r := bufio.NewReader(fi)
    
        for {
        //func (b *Reader) ReadString(delim byte) (string, error) {}
            line, err := r.ReadString('\n')
            line = strings.TrimSpace(line)
            if err != nil && err != io.EOF {
                panic(err)
            }
            if err == io.EOF {
                break
            }
            fmt.Println(line)
        }
    }
    

    3.代码讲解

    3.1bufio.Reader结构体

    type Reader struct {
    	buf          []byte
    	rd           io.Reader // reader provided by the client
    	r, w         int       // buf read and write positions
    	err          error
    	lastByte     int // last byte read for UnreadByte; -1 means invalid
    	lastRuneSize int // size of last rune read for UnreadRune; -1 means invalid
    }
    

    三.每次只读取固定字节数

    每次仅读取一行数据,可以解决内存占用过大的问题,但要注意的是,并不是所有的文件都有换行符 \n;
    因此对于一些不换行的大文件来说,还得再想想其他办法

    1.使用os库

    通用的做法是:
    先创建一个文件句柄,可以使用 os.Open 或者 os.OpenFile;
    然后 bufio.NewReader 创建一个 Reader;
    然后在 for 循环里调用 Reader 的 Read 函数,每次仅读取固定字节数量的数据

    Read方法读取数据写入p;本方法返回写入p的字节数;本方法一次调用最多会调用下层Reader接口一次Read方法,因此返回值n可能小于len§;读取到达结尾时,返回值n将为0而err将为io.EOF

    package main
    
    import (
        "bufio"
        "fmt"
        "io"
        "os"
    )
    
    func main() {
        // 创建句柄
        fi, err := os.Open("a.txt")
        if err != nil {
            panic(err)
        }
    
        // 创建 Reader
        r := bufio.NewReader(fi)
    
        // 每次读取 1024 个字节
        buf := make([]byte, 1024)
        for {
            //func (b *Reader) Read(p []byte) (n int, err error) {}
            n, err := r.Read(buf)
            if err != nil && err != io.EOF {
                panic(err)
            }
    
            if n == 0 {
                break
            }
            fmt.Println(string(buf[:n]))
        }
    }
    

    2.使用 syscall库

    os 库本质上也是调用 syscall 库,但由于 syscall 过于底层,如非特殊需要,一般不会使用 syscall;
    本篇为了内容的完整度,这里也使用 syscall 来举个例子;
    本例中,会每次读取 100 字节的数据,并发送到通道中,由另外一个协程进行读取并打印出来

    package main
    
    import (
        "fmt"
        "sync"
        "syscall"
    )
    
    func main() {
        fd, err := syscall.Open("christmas_apple.py", syscall.O_RDONLY, 0)
        if err != nil {
            fmt.Println("Failed on open: ", err)
        }
        defer syscall.Close(fd)
    
        var wg sync.WaitGroup
        wg.Add(2)
        dataChan := make(chan []byte)
        go func() {
            wg.Done()
            for {
                data := make([]byte, 100)
                n, _ := syscall.Read(fd, data)
                if n == 0 {
                    break
                }
                dataChan <- data
            }
            close(dataChan)
        }()
    
        go func() {
            defer wg.Done()
            for {
                select {
                case data, ok := <-dataChan:
                    if !ok {
                        return
                    }
    
                    fmt.Printf(string(data))
                default:
    
                }
            }
        }()
        wg.Wait()
    }
    
    展开全文
  • python--pandas读取excel

    千次阅读 2021-04-06 18:02:17
    对excel文件的读取是数据分析中常见的,在python中,pandas库的read_excel方法能够读取excel文件,包括xls和xlsx格式。 本文介绍使用pandas读取excel以及读取过程中一些常见的问题。 环境 Excel文件的格式为xls和...
  • opengl 读取与显示obj文件

    千次下载 热门讨论 2013-12-23 17:20:30
    使用trackball和glm,可以读取和显示obj文件,并进行旋转与缩放。运行环境:vs2010, 运行后用o或者O选择obj文件,+和-进行缩放
  • 利用matlab读取图像

    千次阅读 2021-04-18 08:35:58
    怎样用matlab读取20张图片并依次展示出来指定路径下 单个文件夹data中所有图像 P = '.\data\';% 图像文件夹路径 img_path_list = dir(strcat(P,'*.jpg'));%获取该文件夹中所有jpg格式的图像 N = length(img_path_...
  • 用python的pandas读取excel文件中的数据

    千次阅读 多人点赞 2021-09-13 20:24:32
    一、读取Excel文件   使用pandas的**read_excel()**方法,可通过文件路径直接读取。注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件、并同时指定sheet下的数据。可以一次读取...
  • Java读取文件为字符串

    千次阅读 2021-03-09 23:28:08
    有时在处理文件时,我们需要将文件读取为Java中的String。下面学习如何将文件读取到Java中的String的几种方法。将文件读取到String有很多方法可以在Java中将文件读取到String。在本教程中学习以下几种方法。使用...
  • Android读取文本文件的demo

    千次下载 热门讨论 2012-03-17 22:56:43
    一个Android读取文本文件的demo,txt文件放到res/raw文件夹下,通过代码将其读取并显示在屏幕上。
  • 使用matlab进行文件夹内所有图片的读取 在此,使用两种不同的方法来进行文件的读取,以及验证读取的顺序。(方法1符合大多数人的需求) 方法1:使用[路径,特定前缀,序号,后缀] file_path = '.\RGB25\';% 图像...
  • 本文要点刚要:(一)读文本文件格式的数据函数:read_csv,read_table1.读不同分隔符的文本文件,用参数sep2.读无字段名(表头)的文本...(二)将数据写成文本文件格式函数:to_csv范例如下:(一)读取文本文件格...
  • 在opencv中读取文件夹中的多幅图片并保存到另一文件夹中
  • matlab读取txt文件

    万次阅读 多人点赞 2020-12-15 13:49:03
    其调用格式为: [A,COUNT]=fscanf(fid,format,size) 说明:其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:d...
  • java 使用POI读取excel数据

    千次阅读 2021-03-08 20:47:16
    原文:http://doc.okbase.net/0201zcr/archive/161440.html一、定义Apache POI是Apache软件基金会的...二、所需jar包:三、简单的一个读取excel的demo1、读取文件方法/*** 读取出filePath中的所有数据信息* @param f...
  • pandas读取文件

    千次阅读 2021-11-15 20:17:31
    读取文件 一、pandas读取文件用法 1、pandas读取xlsx、xls文件 import pandas as pd data=pd.read_excel('path',sheetname='sheet1',header=0,names=['第一列','第二列','第三列']) path:要读取的文件的绝对路径 ...
  • Pandas读取csv

    千次阅读 2022-01-24 21:44:06
    对于文件的操作中,读写csv操作是一个比较常见的操作,很多时候可能会选择使用python中的文件读取的方式对csv文件操作,这种方式并没有什么问题,但读写的效率不高,编写的代码量也偏多。 这里介绍使用pandas进行...
  • java 读取读取配置文件

    千次阅读 2021-06-18 15:29:52
    @Test public void test2() throws Exception { Properties pros = new ... //读取配置文件的方式一: // FileInputStream fis = new FileInputStream("jdbc.properties"); // FileInputStream fis = ne...
  • 50_Pandas读取 Excel 文件 (xlsx, xls)

    万次阅读 2022-05-19 16:16:15
    50_Pandas读取 Excel 文件 (xlsx, xls) 要使用 pandas 将 Excel 文件(扩展名:.xlsx、.xls)作为 pandas.DataFrame 读取,请使用 pandas.read_excel () 函数。 这里,将描述以下内容。 openpyxl、xlrd的安装 ...
  • java 读取excel数据

    万次阅读 2021-12-06 16:08:22
    本文共介绍两种方式,第一种是常规POI读取,第二种是大文件读取。 依赖包 <poi.version>4.1.2</poi.version> <!-- excel工具 --> <dependency> <groupId>org.apache.poi<...
  • java读取excel ,xls和xlsx

    千次下载 热门讨论 2013-11-13 20:46:29
    java读取excel文件,兼容xlsx格式,可以用于07版本和10版本
  • python读取dat文件

    千次阅读 2021-12-31 21:22:17
    #1:读取指定行 print("----读取指定的单行,数据会存在列表里面----") df=pd.read_csv('测试.dat')# data=df.loc[0].values#0表示第一行 这里读取数据并不包含表头,要注意哦! print("读取指定行的数据:\n{0}"....
  • matlab读取txt数据文件

    千次阅读 2022-04-27 14:35:40
    load函数适合读取纯数据文本 例子,data_txt.txt内容如下: 0 1.000000 2.000000 3.000000 1 3.000000 4.000000 5.000000 2 6.000000 7.000000 8.000000 3 9.000000 10.00000 11.00000 读取代码如下: %对于...
  • POI读取word文档的文字内容和图片内容

    千次下载 热门讨论 2014-09-04 13:55:55
    POI读取word文档的文字内容和图片内容

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,645,976
精华内容 1,858,390
关键字:

读取

友情链接: microcontroller.rar