前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >读写二进制文件与文本文件

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

作者头像
雪飞鸿
发布2020-11-03 14:55:49
1.2K0
发布2020-11-03 14:55:49
举报
文章被收录于专栏:me的随笔

文件分类

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

二进制文件

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

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

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

文本文件

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

操作文件

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

JavaScript

参考FileReader

代码语言:javascript
复制
<!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模块

代码语言:javascript
复制
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#
代码语言:javascript
复制
using var fileStream = File.Open(@"C:\Users\WenJun\Desktop\img.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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-10-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件分类
    • 二进制文件
      • 文本文件
        • JavaScript
        • Python
        • C#
    • 操作文件
    • 推荐阅读
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档