• 读写二进制文件与文本文件


    文件分类

    文件分为两类:二进制文件和文本文件。所有数据在计算机中均以二进制形式存在,这里所说的二进制和文本是以程序解释文件数据的方式来区分的。

    二进制文件

    二进制文件中通常被看作是一个字节序列,文件中的数据会被应用程序解释为文本字符之外的东西,常见的二进制文件有:pdf、exe、图片等等。

    通常,二进制文件会包含一些头信息或者元数据以便于应用程序来解释文件中的数据,具体将数据解释为什么内容还需结合应用程序自身的逻辑,一个字节既可以是字符,也可是音视频。头信息通常包含signature or magic number用来确定文件数据格式。不含有头信息的二进制文件,一般叫做float binary file

    在一些场景下,如邮件,无法直接发送二进制数据,这时需要将二进制数据通过Binary-to-text encoding协议转换为文本。

    文本文件

    相较于二进制文件,文本文件比较简单。通常不会像二进制文件那样含有一些头信息,但在读写文件时需要指明指明所用字符集与编码方式。

     

    操作文件

    编程语言对于二进制文件和文本文件的处理会有不同的方式,如,使用参数来区分或者使用不同的方法重载。

    JavaScript

    参考FileReader

    <!DOCTYPE html>
    <html lang="en"><head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <input type="file" id="file" value="选择文件" />
        <input type="button" value="上传" onclick="getFile()" />
        <script>
            function getFile() {
                let selectedFile = document.getElementById('file').files[0];
    ​
                var reader = new FileReader();
                reader.onload = function () {
                    console.log(reader.result);
                    let buffer = new Uint8Array(reader.result);
                    console.log(buffer);
                };
                // 将文件内容转为字节序列
                reader.readAsArrayBuffer(selectedFile);
                // 以文本形式读取文件
                // reader.readAsText(selectedFile,'utf-8');
            }
    ​
        </script>
    </body>
    </html>

    Python

    参考io模块

    import os
    import io
    
    current_dir = os.getcwd()
    
    token_file_path = f'{current_dir}/token'
    
    # 读取文本文件需指明编码方式
    with open(token_file_path, 'r', encoding='utf8') as file:
        token = file.read()
    
    # 使用二进制方式读写文件
    with open(token_file_path, 'rb') as file:
        b_token = file.read()
    
    with open(token_file_path, 'wb') as file:
        file.write(b_token)
        
    img_file_path = f'{current_dir}/demo/imgs/js.PNG'
    with open(img_file_path, 'rb') as file:
        img_context = file.read()
        img_bytes = bytearray(img_context)
        # list(img_context)
        # print(img_context[0])
        # list(img_bytes)
        # print(img_bytes[0])
    
    with open(f'{current_dir}/demo/src/img_file.png', 'wb') as file:
        file.write(img_context)

    C#

    using var fileStream = File.Open(@"C:UsersWenJunDesktopimg.PNG", FileMode.Open, FileAccess.Read, FileShare.Read);
    // File.OpenText("");
    using var streamReader = new StreamReader(fileStream, true);
    //using var streamReader = new StreamReader(fileStream, Encoding.UTF8);
    //while (streamReader.ReadLine()>0)
    //{
    
    //}
    var img_str = streamReader.ReadToEnd();

    推荐阅读

    Binary file

    List of file signatures

    Text file

  • 相关阅读:
    《ASP.NET Core跨平台开发从入门到实战》Web API自定义格式化protobuf
    .NET Core中文分词组件jieba.NET Core
    .NET Core 2.0及.NET Standard 2.0
    Visual Studio 2017 通过SSH 调试Linux 上.NET Core
    Visual Studio 2017 ASP.NET Core开发
    Visual Studio 2017正式版离线安装及介绍
    在.NET Core 上运行的 WordPress
    IT人员如何开好站立会议
    puppeteer(二)操作实例——新Web自动化工具更轻巧更简单
    puppeteer(一)环境搭建——新Web自动化工具(同selenium)
  • 原文地址:https://www.cnblogs.com/Cwj-XFH/p/13906964.html
Copyright © 2020-2023  润新知