读写 bin 和 xml 文件¶
在本例中,我们将比较在 Engee 和 MATLAB 中读取 bin 和 xml 文件的情况。
让我们从二进制文件(bin)开始。二进制文件包含原始的数据结构,因此如果没有特殊工具,很难对其进行解释。这类文件由字节流组成,可以代表任何数据,无论是文本、图像、音频还是视频。这些数据以二进制形式存储,需要经过特殊处理才能提取所需的信息。
处理二进制文件的主要特点如下。 1.数据格式:在二进制文件中,数据以字节序列表示,每个字节存储一个信息单位。 2.数据解释:要理解二进制文件的内容,需要了解其内部结构。如果不了解数据结构,程序就无法正确解释文件。 3.通过读写单个字节或字节块来访问数据。程序必须知道解释器将如何处理这些数据。
让我们创建一个用于读取的二进制文件。
Pkg.add(["EzXML"])
open("file.bin", "w") do io
write(io, Int32(12)) # Запишем целое число типа Int32
write(io, Float64(3.14)) # Запишем вещественное число типа Float64
write(io, "Test\n") # Запишем строку
end
在 Engee 中读取二进制文件:
open("file.bin", "r") do io
num_int = read(io, Int32) # Считаем целое число типа Int32
num_float = read(io, Float64) # Считаем вещественное число типа Float64
str = String(read(io)) # Считаем оставшуюся часть файла как строку
println("Целое число: ", num_int)
println("Вещественное число: ", num_float)
print("Прочитанная строка: ", str)
end
在MATLAB中读取二进制文件
using MATLAB
mat"""
fileID = fopen('file.bin', 'rb');
num_int = fread(fileID, 1, 'int32');
num_float = fread(fileID, 1, 'double');
str = fscanf(fileID, '%c');
fclose(fileID);
"""
mat"""fprintf('Прочитанные целые числа: ');
disp(num_int);"""
mat"""fprintf('Прочитанные вещественные числа: ');
disp(num_float);"""
mat"""disp(['Прочитанная строка: ', str]);"""
尽管测试结果表明代码是相似的,但两种语言之间的差异是显而易见的,Engee 的语法更简单、更直观。此外,Engee 中的数据类型更容易理解,因为没有 "double "的概念。
现在我们来看看 XML 文件 (xml)。它们旨在以树形结构存储结构化数据。XML 文件的每个元素都有自己的标签,标签定义了该元素所包含的数据类型。这使得处理此类文件更加容易,因为程序可以分析文件结构并检索所需的数据。
使用 XML 文件的主要特点如下。 1.数据结构:XML 文件是一个树形结构,其中每个元素(标签)都包含有关数据类型和结构的信息。 2.层次结构:XML 文件以树形结构组织数据,其中每个元素都有父元素和子元素。 3.标记:XML 文件包含定义数据组织方式的标记。这使得数据更容易处理,程序也知道如何处理每个元素。
读取此类文件最简单的方法是使用字符串表示法。要详细分析此类文件,Engee有EzXML库。由于没有内置工具,MATLAB使用Java API来处理XML。
Pkg.add("EzXML")
using EzXML
using EzXML
doc = parsexml("""
<primates>
<genus name="Homo">
<species name="sapiens">Human</species>
</genus>
<genus name="Pan">
<species name="paniscus">Bonobo</species>
<species name="troglodytes">Chimpanzee</species>
</genus>
</primates>
""")
# Сохраняем документ в файл
write("file.xml", doc)
在 Engee 中读取 XML 文件:
open("file.xml", "r") do io
str = String(read(io))
println(str)
end
在 MATLAB 中读取 XML 文件
mat"""
fileID = fopen('file.xml', 'rb');
disp(fscanf(fileID, '%c'));
"""
结论¶
在本例中,我们研究了两种编程语言如何编写和读取二进制文件和 XML 文档。从解析过程中我们可以看出,语法和功能方面的优势都在Engee一方。