Baca File PST/OST Rusak
Menangani File Penyimpanan yang Rusak
Kadang-kadang tidak memungkinkan untuk membaca PST/OST karena beberapa masalah. Misalnya, beberapa blok data mungkin rusak. Dalam kasus tersebut, biasanya terjadi pengecualian saat memanggil EnumerateFolders, EnumerateMessages, GetContents, GetSubfolders, dll. metode. Namun pesan atau folder individu mungkin tetap tidak rusak di dalam penyimpanan.
Metode untuk Menemukan Pengidentifikasi Item
Metode berikut memungkinkan menemukan pengidentifikasi item secara hierarkis.
- FindMessages(string parentEntryId) - menemukan pengidentifikasi pesan untuk folder tersebut.
- FindSubfolders(string parentEntryId) - menemukan pengidentifikasi subfolder untuk folder tersebut.
Pengidentifikasi yang didapatkan dengan menggunakan metode tersebut dapat digunakan untuk mengambil pesan dan folder.
NOTE: Harap dicatat bahwa meskipun memiliki kelebihan, ada penyimpanan yang rusak yang tidak dapat dibaca bahkan dengan metode ini.
Penelusuran File PST
Contoh kode berikut menunjukkan penelusuran file PST serta ekstraksi folder dan pesan. Untuk mendapatkan daftar pengidentifikasi, gunakan metode FindMessages dan FindSubfolders. Kemudian pengidentifikasi tersebut diteruskan ke ExtractMessage atau GetFolderById metode untuk mengekstrak elemen.
using (var pst = PersonalStorage.FromFile(fileName))
{
ExploreCorruptedPst(pst, pst.RootFolder.EntryIdString);
}
public static void ExploreCorruptedPst(PersonalStorage pst, string rootFolderId)
{
var messageIdList = pst.FindMessages(rootFolderId);
foreach (var messageId in messageIdList)
{
try
{
var msg = pst.ExtractMessage(messageId);
Console.WriteLine( "- " + msg.Subject);
}
catch
{
Console.WriteLine("Message reading error. Entry id: " + messageId);
}
}
var folderIdList = pst.FindSubfolders(rootFolderId);
foreach (var subFolderId in folderIdList)
{
if (subFolderId != rootFolderId)
{
try
{
FolderInfo subfolder = pst.GetFolderById(subFolderId);
Console.WriteLine(subfolder.DisplayName);
}
catch
{
Console.WriteLine("Message reading error. Entry id: " + subFolderId);
}
ExplodeCorruptedPst(pst, subFolderId);
}
}
}