• 文件数据交换格式说明


    对于文件的说明

    二进制文件和文本文件的对比

    对比项二进制文件文本文件
    定义二进制文件直接由二进制数字0和1组成,不存在统一的字符编码。文本文件是基于字符编码的文件,一般采用定长编码方式,如ASCII编码、UNICODE编码。
    优势1. 存储利用率高,因为编码是变长的,灵活利用存储空间。1. 易于人类阅读和编辑,因为文本文件以字符形式存储,可以直接查看和编辑。
    2. 适用于存储各种类型的数据,包括图像、音频、视频等。2. 通用性强,因为基于字符编码,可以在不同的系统和软件中交换和读取。
    3. 在某些情况下,二进制文件的读写速度更快。
    劣势1. 不直观,无法直接查看和编辑文件内容。1. 存储利用率相对较低,因为采用定长编码方式,可能会浪费存储空间。
    2. 不同的二进制文件格式有不同的解析方式,增加了处理复杂性。2. 对于非文本数据(如图像、音频等),文本文件无法直接存储,需要转换编码或进行Base64编码。
    3. 在国际化场景下,文本文件可能需要处理字符编码的问题,如Unicode编码和各种字符集的转换。

    1. 二进制文件 [Binary file]
    计算机文件基本上分为二种:二进制文件 和 ASCII(也称纯文本文件),

    图形文件及文字处理程序等计算机程序都属于二进制文件。// 所以常常可以听到下载的二进制可执行文件

    这些文件[二进制文件]含有特殊的格式及计算机代码。

    ASCII 则是可以用任何文字处理程序阅读的简单文本文件。


    文本文件只是二进制文件中的一种特例。

    为了与文本文件相区别,人们又把除了文本文件以外的文件称为二进制文件,由于很难严格区分文本文件和二进制文件的概念,所以我们可以简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,我们就称之为文本文件,除此之外的文件就是二进制文件。

    https://baike.baidu.com/item/二进制文件/996661?fr=aladdin

    2. 纯文本文件 [Text file]
    纯文本 由可打印字符组成,人可以直接阅读和理解其形式。

    例如:

    百科=百度百科、整数类型 甲变量。


    纯文本并非意味着文本是无结构的;

    标准通用标记语言[SGM或SGML]和HTML、XML都是有结构定义良好的的纯文本的好例子。

    通过纯文本,你可以做你通过某种二进制格式所能做的每件事情,其中包括版本管理。

    与直接的二进制编码相比,纯文本所处的层面往往更高;

    前者[二进制文件]通常直接源自实现。

    假定你想要存储叫做uses_menus的属性,其值既可为真/true,也可为假/false。

    使用纯文本,你可以将其写为:myprop.uses_menus=FALSE 把它与0010010101110101对比一下。

    大多数二进制格式的问题在于,理解数据所必需的语境与数据本身是分离的。

    你人为地使数据与其含义脱离开来。数据也可能加了密;没有应用逻辑对其进行解析,这些数据绝对没有意义。但是,通过纯文本,你可以获得自描述(self-describing)的、不依赖于创建它的应用的数据流。

    https://baike.baidu.com/item/二进制文件/996661?fr=aladdin

    补充:

    二进制文件, 跟存储方式[在硬盘上]没有关系。

    即不是因为存储格式为二进制的关系, 而是这些文件 含有特殊的格式及计算机代码.
     

    文本文件和数据库格式文件对比

    格式类型优势劣势
    文本格式1. 简单易用,无需特殊软件或中间件1. 查询效率低,特别是对于大型文本文件
    (如TXT、CSV等)2. 适用于小型工程或查询效率要求不高的应用2. 难以保证数据完整性和一致性
    3. 可直观查看和编辑数据3. 不支持事务处理
    4. 不适合存储大量数据
    数据库格式1. 结构化数据存储,确保数据的完整性和一致性1. 数据库维护成本较高
    (如MySQL、Oracle等)2. 高效查询,支持索引和优化查询性能2. 需要安装和配置数据库软件
    3. 支持大量数据存储,不影响程序运行速度3. 需要编写SQL语句操作数据库
    4. 支持多用户并发访问和共享数据4. 开发成本可能高于文本文件
    5. 提供数据安全性、事务处理和并发控制等功能

    文本格式和数据库格式在数据存储和管理方面有着显著的区别,各自具有不同的优势和劣势。以下是对这两种格式的比较:

    文本格式:

    优势:

    1. 通用性:文本格式是一种通用的数据交换格式,几乎所有的系统和软件都能读取和处理文本文件。
    2. 简单性:文本文件结构简单,易于创建、编辑和查看。
    3. 可读性:文本文件可以直观地查看和编辑,不需要专门的软件或工具。

    劣势:

    1. 数据结构限制:文本格式通常缺乏严格的数据结构,这使得在处理复杂数据时容易出现错误。
    2. 查询效率低:文本文件不支持快速的搜索和查询,特别是对于大型文本文件,查找特定数据可能非常耗时。
    3. 安全性和完整性:文本文件容易损坏或被篡改,且缺乏内置的数据完整性和安全性机制。

    数据库格式:

    优势:

    1. 结构化数据存储:数据库具有严格的数据结构,能够确保数据的完整性和一致性。
    2. 高效查询:数据库支持索引和查询优化,使得在大量数据中查找特定信息变得非常快速和高效。
    3. 数据安全性:数据库通常具有内置的安全机制,如用户认证、访问控制和数据加密,以确保数据的安全性。
    4. 数据完整性:数据库支持事务处理,可以确保在多个操作之间保持数据的一致性。

    劣势:

    1. 复杂性:数据库的管理和维护相对复杂,需要专门的软件和专业技能。
    2. 成本:使用数据库通常需要支付许可费和维护费用,这可能增加项目的成本。
    3. 性能开销:与文本文件相比,数据库在处理数据时可能产生额外的性能开销,特别是在处理大量数据时。

    综上所述,文本格式和数据库格式各有优缺点。选择哪种格式取决于具体的应用需求和场景。在需要简单、通用和易于编辑的数据存储方案时,文本格式可能是一个更好的选择。而在需要高效查询、数据安全性和结构化数据存储的情况下,数据库格式则更具优势。

    各种文本文件

    件类型定义优势劣势
    INIINI文件是一种简单的配置文件格式,用于存储应用程序的配置信息,通常以键值对的形式存储数据。1.简单易读易写 2.适用于小型配置项1.功能较为简单,不适合复杂数据结构 2.缺乏标准化
    CSVCSV(Comma Separated Values)文件是一种表格数据格式,由逗号分隔的值组成,常用于数据交换和存储。1.通用性强,可在不同系统和软件中导入导出 2.结构简单,易于生成和解析1.只支持基本文本数据类型 2.缺乏标准化,不同程序解析方式可能不同
    XMLXML(Extensible Markup Language)是一种标记语言,用于描述数据的结构和含义,以标签的形式表示数据。1.结构化数据表示,清晰展示数据层次和关系 2.跨平台支持,适用于数据交换1.数据冗余度较高,文件体积相对较大 2.解析复杂度高,需要处理标签嵌套关系
    JSONJSON(JavaScript Object Notation)是一种轻量级的数据交换格式,基于JavaScript语法,易于阅读和编写。1.轻量级,易于阅读和编写 2.支持复杂数据结构,适用于Web应用程序1.对人类可读性一般,相比于INI和CSV稍显复杂

    INI文件

    一、了解什么是INI文件?

    ini 文件是Initialization File的缩写,即初始化文件,这是用来配置应用软件以实现不同用户的要求。

    二、INI文件的格式

    INI文件由节、键、值组成。
    一个简单的的INI文件例子如下:

    1. [Setting]
    2. INIT_FLAG=0;
    3. VOLUME=1;
    4. LANGUAGE=1;

    如上例子,[Setting]就是节,=号左边的值是键,=号右边的是值。

    三、优势

    1. 简单易用

    ini 文件格式具有非常清晰的语法结构,除 Section 和 Key 之外,它几乎没有其他标记。这种简单性使得 ini 文件易于编辑、维护和管理,符合 Linux 操作系统的实际需求。

    2. 跨平台性好

    ini 文件格式在不同的操作系统下,都有着相同的表现方式和处理方法,这种跨平台性使得程序员可以方便地将其应用于不同的操作系统和软件中。

    3. 扩展性强

    ini 文件格式的 Key-Value 对在文件中自行组织和分组,可以任意嵌套,这种特性使得 ini 格式文件具有非常强的扩展性,保证了日后对系统的扩展和更新不受限制。

    CSV文件

    1. CSV(逗号分隔值)格式 CSV是一种简单的文本文件格式,使用逗号作为字段之间的分隔符。下面是CSV格式的基本使用方法:

    代码示例:

    1. import csv
    2. # 写入CSV文件
    3. data = [
    4. ['Name', 'Age', 'City'],
    5. ['John', '25', 'New York'],
    6. ['Alice', '30', 'London'],
    7. ['Bob', '35', 'Paris']
    8. ]
    9. with open('data.csv', 'w', newline='') as file:
    10. writer = csv.writer(file)
    11. writer.writerows(data)
    12. # 读取CSV文件
    13. with open('data.csv', 'r') as file:
    14. reader = csv.reader(file)
    15. for row in reader:
    16. print(row)

    XML文件

    1. XML(可扩展标记语言)格式 XML是一种具有自定义标签的文本文件格式,用于存储和传输数据。下面是XML格式的基本使用方法:

    代码示例:

    1. import xml.etree.ElementTree as ET
    2. # 创建XML文件
    3. root = ET.Element('root')
    4. employee = ET.SubElement(root, 'employee')
    5. name = ET.SubElement(employee, 'name')
    6. age = ET.SubElement(employee, 'age')
    7. city = ET.SubElement(employee, 'city')
    8. name.text = 'John'
    9. age.text = '25'
    10. city.text = 'New York'
    11. tree = ET.ElementTree(root)
    12. tree.write('data.xml')
    13. # 解析XML文件
    14. tree = ET.parse('data.xml')
    15. root = tree.getroot()
    16. for employee in root.findall('employee'):
    17. name = employee.find('name').text
    18. age = employee.find('age').text
    19. city = employee.find('city').text
    20. print(name, age, city)

    JSON

    1. JSON(JavaScript对象表示法)格式 JSON是一种轻量级的数据交换格式,以键值对的形式组织数据。下面是JSON格式的基本使用方法:

    代码示例:

    1. import json
    2. # 创建JSON文件
    3. data = {
    4. 'employee': {
    5. 'name': 'John',
    6. 'age': 25,
    7. 'city': 'New York'
    8. }
    9. }
    10. with open('data.json', 'w') as file:
    11. json.dump(data, file)
    12. # 解析JSON文件
    13. with open('data.json') as file:
    14. data = json.load(file)
    15. name = data['employee']['name']
    16. age = data['employee']['age']
    17. city = data['employee']['city']
    18. print(name, age, city)

    参考:

    「File」计算机常见文件数据格式_数据存储格式_何曾参静谧的博客-CSDN博客

    https://www.cnblogs.com/mymindview/p/8528600.html

    文件系统 - 文件类型 - 二进制/文本类型_二进制文件-CSDN博客

    C语言解析INI文件(利用开源的iniparse库) - 知乎

    Python学习 -- 常用数据交换格式(CSV、XML、JSON) - 知乎

  • 相关阅读:
    【元宇宙欧米说】通过赛氪宇宙看像素艺术与元宇宙的碰撞
    Apache Spark 的基本概念和在大数据分析中的应用
    第二证券:庄家会出现在十大流通股东吗?
    web3资讯及远程工作
    Linux进程地址空间
    LVS负载均衡群集
    1.5-07:奥运奖牌计数
    vue中watch如何对对象进行深度监听
    IB音乐课难不难?
    docker 更换Docker Root Dir
  • 原文地址:https://blog.csdn.net/zhang_yin_liang/article/details/134236594