Allocates a handle for data, you MUST call Write to commit the handle, otherwise the handle may be reallocated after closing and re-opening this file. If you do not intend to commit the handle by writing to it, you should still call Delete() so that it may be reused.
Syntax
Visual Basic (Declaration) | |
---|
Public Function Create() As UInteger |
Exceptions
Example
Library/Library.Test/TestTransactedCompoundFile.cs
C# | Copy Code |
---|
Dictionary<uint, byte[]> store = new Dictionary<uint, byte[]>();
using (TempFile temp = new TempFile())
{
uint id;
byte[] bytes;
using (TransactedCompoundFile test = new TransactedCompoundFile(new TransactedCompoundFile.Options(temp.TempPath) { BlockSize = 512, CreateNew = true }))
{
for (int i = 0; i < 10000; i++)
{
switch(i < 1000 ? 0 : rand.Next(3))
{
case 0:
{
id = test.Create();
bytes = RandomBytes(rand.Next(1000));
store.Add(id, bytes);
test.Write(id, bytes, 0, bytes.Length);
break;
}
case 1:
{
id = RandomPick(store.Keys);
bytes = store[id];
CompareBytes(bytes, 0, bytes.Length, IOStream.ReadAllBytes(test.Read(id)));
break;
}
case 2:
{
id = RandomPick(store.Keys);
Assert.IsTrue(store.Remove(id));
test.Delete(id);
break;
}
}
}
foreach (var kv in store)
{
CompareBytes(kv.Value, 0, kv.Value.Length, IOStream.ReadAllBytes(test.Read(kv.Key)));
}
}
} |
VB.NET | Copy Code |
---|
Dim store As New Dictionary(Of UInteger, Byte())()
Using temp As New TempFile()
Dim id As UInteger
Dim bytes As Byte()
Using test As New TransactedCompoundFile(New TransactedCompoundFile.Options(temp.TempPath) With { _
Key .BlockSize = 512, _
Key .CreateNew = True _
})
Dim i As Integer = 0
While i < 10000
Select Case If(i < 1000, 0, rand.[Next](3))
Case 0
If True Then
id = test.Create()
bytes = RandomBytes(rand.[Next](1000))
store.Add(id, bytes)
test.Write(id, bytes, 0, bytes.Length)
Exit Select
End If
Case 1
If True Then
id = RandomPick(store.Keys)
bytes = store(id)
CompareBytes(bytes, 0, bytes.Length, IOStream.ReadAllBytes(test.Read(id)))
Exit Select
End If
Case 2
If True Then
id = RandomPick(store.Keys)
Assert.IsTrue(store.Remove(id))
test.Delete(id)
Exit Select
End If
End Select
System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1)
End While
For Each kv As var In store
CompareBytes(kv.Value, 0, kv.Value.Length, IOStream.ReadAllBytes(test.Read(kv.Key)))
Next
End Using
End Using |
Requirements
Target Platforms: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7
See Also