Κοντέινερ CFB
Δοχεία CFB
Το Compound File Binary (CFB) είναι η μορφή δοχείου που χρησιμοποιείται από τα αρχεία Outlook .msg. Aspose.Email FOSS for .NET παρέχει CfbReader για ανάγνωση και CfbWriter / CfbDocument για εγγραφή των CFB δοχείων απευθείας.
Ανάγνωση CFB Containers
Άνοιγμα αρχείου CFB
using Aspose.Email.Foss.Cfb;
// From file
using var reader = CfbReader.FromFile("sample.msg");
// From stream
using var stream = File.OpenRead("sample.msg");
using var reader2 = CfbReader.FromStream(stream);
// From byte array
var data = File.ReadAllBytes("sample.msg");
using var reader3 = new CfbReader(data);Επιθεώρηση Κεφαλίδας και Δομής
Console.WriteLine($"Version: {reader.MajorVersion}");
Console.WriteLine($"Sector size: {reader.SectorSize}");
Console.WriteLine($"Mini-sector size: {reader.MiniSectorSize}");
Console.WriteLine($"Directory entries: {reader.DirectoryEntryCount}");
Console.WriteLine($"Streams materialized: {reader.MaterializedStreamCount}");
Console.WriteLine($"File size: {reader.FileSize}");Περιήγηση του Δέντρου Καταλόγων
// Full recursive traversal with depth
foreach (var (depth, entry) in reader.IterTree())
{
var indent = new string(' ', depth * 2);
Console.WriteLine($"{indent}{entry.Name} [{entry.ObjectType}]");
}
// Iterate only storages
foreach (var entry in reader.IterStorages())
Console.WriteLine($"Storage: {entry.Name}");
// Iterate only streams
foreach (var entry in reader.IterStreams())
Console.WriteLine($"Stream: {entry.Name} ({entry.StreamSize} bytes)");Πλοήγηση παιδιών και επίλυση διαδρομών
// Direct children of the root
foreach (var entry in reader.IterChildren(CfbConstants.RootStreamId))
Console.WriteLine(entry.Name);
// Resolve a nested path
var target = reader.ResolvePath(new[] { "__substg1.0_0037001F" });
if (target != null)
{
var streamData = reader.GetStreamData(target.Value);
Console.WriteLine($"Stream data: {streamData.Length} bytes");
}Εύρεση παιδιού με όνομα
var child = reader.FindChildByName(CfbConstants.RootStreamId, "__properties_version1.0");
if (child != null)
{
var bytes = reader.GetStreamData(child.Value);
Console.WriteLine($"Property stream: {bytes.Length} bytes");
}Γραφή CFB Containers
Δημιουργία εγγράφου CFB
using Aspose.Email.Foss.Cfb;
var root = new CfbStorage("Root Entry");
root.AddStream(new CfbStream("data.bin", new byte[] { 0x01, 0x02, 0x03 }));
var subStorage = new CfbStorage("SubFolder");
subStorage.AddStream(new CfbStream("nested.txt", System.Text.Encoding.UTF8.GetBytes("hello")));
root.AddStorage(subStorage);
var document = new CfbDocument(root);Σειριοποίηση σε Bytes ή Αρχείο
// To byte array
byte[] cfbBytes = CfbWriter.ToBytes(document);
// To file
CfbWriter.WriteFile(document, "output.cfb");Επαλήθευση κυκλικής διαδρομής
// Write and reload
CfbWriter.WriteFile(document, "test.cfb");
using var reloaded = CfbReader.FromFile("test.cfb");
foreach (var entry in reloaded.IterChildren(CfbConstants.RootStreamId))
Console.WriteLine(entry.Name);Φορτώστε υπάρχουσα CFB ως CfbDocument
CfbDocument παρέχει ένα μοντέλο στη μνήμη για ένα υπάρχον αρχείο CFB:
var doc = CfbDocument.FromFile("sample.msg");
Console.WriteLine($"Root: {doc.Root.Name}");
Console.WriteLine($"Version: {doc.MajorVersion}.{doc.MinorVersion}");Δείτε επίσης
- Reading MSG Files — Πρόσβαση υψηλού επιπέδου σε αρχεία MSG μέσω MapiMessage
- MAPI Properties — Πρόσβαση σε ροές ιδιοτήτων MAPI
- Features — Πλήρης αναφορά χαρακτηριστικών