使用 MDF 附件文件
此示例说明如何将附件文件添加到 MDF 文件中,如何从 MDF 文件中删除附件文件,以及如何将嵌入在 MDF 文件中的附件文件保存到磁盘。此示例 VehicleData.mf4
中使用的 MDF 文件当前有一个名为 ReadMe.txt
的嵌入附件。
4.0 版或更高版本的 MDF 文件可以有多个附件。可以将附件实际嵌入到 MDF 文件中,也可以通过文件路径和名称从外部引用。区别在于嵌入附件会增大 MDF 文件的大小,而外部附件不会。此示例使用 .txt
文件进行演示,但您也可以将其他类型的文件附加到 MDF 文件。
检查与附件相关的文件元数据
要检查与附件相关的文件元数据,请使用指定的 MDF 文件名调用 mdfInfo
,并查询返回的对象的 Attachment
属性。MDF 文件当前有一个名为 ReadMe.txt
的嵌入附件。
info = mdfInfo("VehicleData.mf4");
info.Attachment
ans=1×7 table
Name Comment Type MIMEType Size EmbeddedSize MD5CheckSum
____________ _______ ________ _________________ ____ ____________ __________________________________
"ReadMe.txt" "" Embedded "application/txt" 7 7 "9166BA27E54335BA1043A5FF023E8F4E"
向 MDF 文件添加嵌入附件
在当前工作目录中创建一个名为 HelloWorld.txt
的文本文件。
fileID = fopen("HelloWorld.txt", "w"); fprintf(fileID, "Hello, World!\n"); fclose(fileID);
使用 type
函数查看该文件的内容。
type("HelloWorld.txt")
Hello, World!
您将 HelloWorld.txt
作为附件添加到 MDF 文件 VehicleData.mf4
,这需要 MDF 文件的修改权限。首先,检查您是否拥有 MDF 文件的写入访问权限。如果没有,请使 MDF 文件可写。
[~, values] = fileattrib("VehicleData.mf4"); if ~values.UserWrite fileattrib("VehicleData.mf4", "+w") end
使用函数 mdfAddAttachment
,将可选参量 Embedded
设置为 true
。此选项确定是否将附件实际嵌入到 MDF 文件中。默认值为 false
。
mdfAddAttachment("VehicleData.mf4", "HelloWorld.txt", Embedded=true)
要验证嵌入的附件是否已成功添加,请检查与附件相关的文件元数据。请注意,对于第二个附件,Size
等于 EmbeddedSize
,因为它是嵌入的附件。
info = mdfInfo("VehicleData.mf4");
info.Attachment
ans=2×7 table
Name Comment Type MIMEType Size EmbeddedSize MD5CheckSum
________________ _______ ________ _________________ ____ ____________ __________________________________
"ReadMe.txt" "" Embedded "application/txt" 7 7 "9166BA27E54335BA1043A5FF023E8F4E"
"HelloWorld.txt" "" Embedded "application/txt" 14 14 "BEA8252FF4E80F41719EA13CDF007273"
向 MDF 文件添加外部附件
创建一个名为 myFolder
的子目录,并在此子目录中创建一个名为 HelloWorld10.txt
的文本文件。
mkdir myFolder fileID = fopen(fullfile("myFolder", "HelloWorld10.txt"), "w"); for ii = 1:10 fprintf(fileID, "Hello, World! %d\n", ii); end fclose(fileID);
使用 type
函数查看该文件的内容。
type(fullfile("myFolder", "HelloWorld10.txt"))
Hello, World! 1 Hello, World! 2 Hello, World! 3 Hello, World! 4 Hello, World! 5 Hello, World! 6 Hello, World! 7 Hello, World! 8 Hello, World! 9 Hello, World! 10
使用函数 mdfAddAttachment
和 .txt
文件的相对路径将 HelloWorld10.txt
作为附件添加到 MDF 文件 VehicleData.mf4
中。未指定可选参量 Embedded
,这会将 .txt
文件作为外部链接的附件进行添加。指定可选参量 Comment
以添加有关附加文件的信息。
mdfAddAttachment("VehicleData.mf4", fullfile("myFolder", "HelloWorld10.txt"), Comment="Repeat hello world for 10 times")
要验证外部附件是否已成功添加,请检查与附件相关的文件元数据。请注意,对于第三个附件,Size
不为零,但 EmbeddedSize
为零,因为它是外部附件。
info = mdfInfo("VehicleData.mf4");
info.Attachment
ans=3×7 table
Name Comment Type MIMEType Size EmbeddedSize MD5CheckSum
___________________________ _________________________________ ________ _________________ ____ ____________ __________________________________
"ReadMe.txt" "" Embedded "application/txt" 7 7 "9166BA27E54335BA1043A5FF023E8F4E"
"HelloWorld.txt" "" Embedded "application/txt" 14 14 "BEA8252FF4E80F41719EA13CDF007273"
"myFolder/HelloWorld10.txt" "Repeat hello world for 10 times" External "application/txt" 161 0 "99B4FDE65B883C034D1997A6DFD27700"
从 MDF 文件中删除附件
使用 mdfRemoveAttachment
函数删除刚刚添加的名为 HelloWorld.txt
的嵌入附件。
mdfRemoveAttachment("VehicleData.mf4", "HelloWorld.txt")
要验证嵌入的附件是否已成功删除,请检查与附件相关的文件元数据。
info = mdfInfo("VehicleData.mf4");
info.Attachment
ans=2×7 table
Name Comment Type MIMEType Size EmbeddedSize MD5CheckSum
___________________________ _________________________________ ________ _________________ ____ ____________ __________________________________
"ReadMe.txt" "" Embedded "application/txt" 7 7 "9166BA27E54335BA1043A5FF023E8F4E"
"myFolder/HelloWorld10.txt" "Repeat hello world for 10 times" External "application/txt" 161 0 "99B4FDE65B883C034D1997A6DFD27700"
同样,删除刚刚添加的名为 HelloWorld10.txt
的外部附件。为了准确识别要删除的附件,指定的附件文件名必须与附件名称完全匹配,如 info.Attachment
中所示。
attachmentName = info.Attachment.Name(2)
attachmentName = "myFolder/HelloWorld10.txt"
mdfRemoveAttachment("VehicleData.mf4", attachmentName)
要验证嵌入的附件是否已成功删除,请检查与附件相关的文件元数据。
info = mdfInfo("VehicleData.mf4");
info.Attachment
ans=1×7 table
Name Comment Type MIMEType Size EmbeddedSize MD5CheckSum
____________ _______ ________ _________________ ____ ____________ __________________________________
"ReadMe.txt" "" Embedded "application/txt" 7 7 "9166BA27E54335BA1043A5FF023E8F4E"
保存 MDF 文件中嵌入的附件
使用函数 mdfSaveAttachment
,将剩余的名为 ReadMe.txt
的嵌入附件保存到当前 MATLAB® 工作文件夹中。
mdfSaveAttachment("VehicleData.mf4", Attachment="ReadMe.txt")