CFB कंटेनर
CFB कंटेनर
Compound File Binary (CFB) वह कंटेनर फ़ॉर्मेट है जिसका उपयोग Outlook .msg फ़ाइलों द्वारा किया जाता है। Aspose.Email
FOSS for .NET प्रदान करता है CfbReader पढ़ने के लिए और CfbWriter / CfbDocument लिखने के लिए
CFB कंटेनरों को सीधे।
CFB कंटेनरों को पढ़ना
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 कंटेनर लिखना
एक 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);बाइट्स या फ़ाइल में सीरियलाइज़ करें
// 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 — MapiMessage के माध्यम से उच्च‑स्तरीय MSG एक्सेस
- MAPI Properties — MAPI प्रॉपर्टी स्ट्रीम्स तक पहुंच
- Features — पूर्ण फीचर संदर्भ