本文整理汇总了C#中Stream.WriteToSync方法的典型用法代码示例。如果您正苦于以下问题:C# Stream.WriteToSync方法的具体用法?C# Stream.WriteToSync怎么用?C# Stream.WriteToSync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Stream
的用法示例。
在下文中一共展示了Stream.WriteToSync方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: UploadFromStream
public void UploadFromStream(Stream source, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null)
{
CommonUtils.AssertNotNull("source", source);
this.attributes.AssertNoSnapshot();
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.PageBlob, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();
if (!source.CanSeek)
{
throw new InvalidOperationException();
}
long size = source.Length - source.Position;
if ((size % Constants.PageSize) != 0)
{
throw new ArgumentException(SR.InvalidPageSize, "source");
}
using (Stream blobStream = this.OpenWrite(size, accessCondition, modifiedOptions, operationContext))
{
DateTime? expiryTime = modifiedOptions.MaximumExecutionTime.HasValue
? DateTime.Now + modifiedOptions.MaximumExecutionTime.Value
: (DateTime?)null;
source.WriteToSync(blobStream, null /* maxLength */, expiryTime, false, true, new OperationContext(), null /* streamCopyState */);
}
}
示例2: UploadFromStreamHelper
internal void UploadFromStreamHelper(Stream source, long? length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)
{
CommonUtility.AssertNotNull("source", source);
if (length.HasValue)
{
CommonUtility.AssertInBounds("length", length.Value, 1);
if (source.CanSeek && length > source.Length - source.Position)
{
throw new ArgumentOutOfRangeException("length", SR.StreamLengthShortError);
}
}
this.attributes.AssertNoSnapshot();
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.BlockBlob, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();
bool lessThanSingleBlobThreshold = source.CanSeek
&& (length ?? source.Length - source.Position)
<= this.ServiceClient.SingleBlobUploadThresholdInBytes;
if (this.ServiceClient.ParallelOperationThreadCount == 1 && lessThanSingleBlobThreshold)
{
string contentMD5 = null;
if (modifiedOptions.StoreBlobContentMD5.Value)
{
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions))
{
StreamDescriptor streamCopyState = new StreamDescriptor();
long startPosition = source.Position;
source.WriteToSync(Stream.Null, length, null /* maxLength */, true, true, tempExecutionState, streamCopyState);
source.Position = startPosition;
contentMD5 = streamCopyState.Md5;
}
}
else
{
// Throw exception if we need to use Transactional MD5 but cannot store it
if (modifiedOptions.UseTransactionalMD5.Value)
{
throw new ArgumentException(SR.PutBlobNeedsStoreBlobContentMD5, "options");
}
}
Executor.ExecuteSync(
this.PutBlobImpl(source, length, contentMD5, accessCondition, modifiedOptions),
modifiedOptions.RetryPolicy,
operationContext);
}
else
{
using (CloudBlobStream blobStream = this.OpenWrite(accessCondition, modifiedOptions, operationContext))
{
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions))
{
source.WriteToSync(blobStream, length, null /* maxLength */, false, true, tempExecutionState, null /* streamCopyState */);
blobStream.Commit();
}
}
}
}
示例3: WritePages
public void WritePages(Stream pageData, long startOffset, string contentMD5 = null, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null)
{
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.PageBlob, this.ServiceClient);
bool requiresContentMD5 = (contentMD5 == null) && modifiedOptions.UseTransactionalMD5.Value;
operationContext = operationContext ?? new OperationContext();
Stream seekableStream = pageData;
if (!pageData.CanSeek || requiresContentMD5)
{
OperationContext tempOperationContext = new OperationContext();
DateTime? expiryTime = modifiedOptions.MaximumExecutionTime.HasValue
? DateTime.Now + modifiedOptions.MaximumExecutionTime.Value
: (DateTime?)null;
Stream writeToStream;
if (pageData.CanSeek)
{
writeToStream = Stream.Null;
}
else
{
seekableStream = new MemoryStream();
writeToStream = seekableStream;
}
long startPosition = seekableStream.Position;
StreamDescriptor streamCopyState = new StreamDescriptor();
pageData.WriteToSync(writeToStream, Constants.MaxBlockSize, expiryTime, requiresContentMD5, true, tempOperationContext, streamCopyState);
seekableStream.Position = startPosition;
if (requiresContentMD5)
{
contentMD5 = streamCopyState.Md5;
}
}
Executor.ExecuteSync(
this.PutPageImpl(seekableStream, startOffset, contentMD5, accessCondition, modifiedOptions),
modifiedOptions.RetryPolicy,
operationContext);
}
示例4: UploadFromStreamHelper
/// <summary>
/// Uploads a stream to a page blob. If the blob already exists, it will be overwritten.
/// </summary>
/// <param name="source">A <see cref="System.IO.Stream"/> object providing the blob content.</param>
/// <param name="length">The number of bytes to write from the source stream at its current position.</param>
/// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the condition that must be met in order for the request to proceed. If <c>null</c>, no condition is used.</param>
/// <param name="options">A <see cref="BlobRequestOptions"/> object that specifies additional options for the request.</param>
/// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param>
internal void UploadFromStreamHelper(Stream source, long? length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)
{
CommonUtility.AssertNotNull("source", source);
if (!source.CanSeek)
{
throw new InvalidOperationException();
}
if (length.HasValue)
{
CommonUtility.AssertInBounds("length", length.Value, 1, source.Length - source.Position);
}
else
{
length = source.Length - source.Position;
}
if ((length % Constants.PageSize) != 0)
{
throw new ArgumentException(SR.InvalidPageSize, "source");
}
this.attributes.AssertNoSnapshot();
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.PageBlob, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();
using (CloudBlobStream blobStream = this.OpenWrite(length, accessCondition, modifiedOptions, operationContext))
{
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions))
{
source.WriteToSync(blobStream, length, null /* maxLength */, false, true, tempExecutionState, null /* streamCopyState */);
blobStream.Commit();
}
}
}
示例5: PutBlock
public void PutBlock(string blockId, Stream blockData, string contentMD5, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null)
{
CommonUtility.AssertNotNull("blockData", blockData);
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.BlockBlob, this.ServiceClient);
bool requiresContentMD5 = (contentMD5 == null) && modifiedOptions.UseTransactionalMD5.Value;
operationContext = operationContext ?? new OperationContext();
Stream seekableStream = blockData;
if (!blockData.CanSeek || requiresContentMD5)
{
ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions);
Stream writeToStream;
if (blockData.CanSeek)
{
writeToStream = Stream.Null;
}
else
{
seekableStream = new MultiBufferMemoryStream(this.ServiceClient.BufferManager);
writeToStream = seekableStream;
}
long startPosition = seekableStream.Position;
StreamDescriptor streamCopyState = new StreamDescriptor();
blockData.WriteToSync(writeToStream, null /* copyLength */, Constants.MaxBlockSize, requiresContentMD5, true, tempExecutionState, streamCopyState);
seekableStream.Position = startPosition;
if (requiresContentMD5)
{
contentMD5 = streamCopyState.Md5;
}
}
Executor.ExecuteSync(
this.PutBlockImpl(seekableStream, blockId, contentMD5, accessCondition, modifiedOptions),
modifiedOptions.RetryPolicy,
operationContext);
}
示例6: UploadFromStreamHelper
internal void UploadFromStreamHelper(Stream source, long? length, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)
{
CommonUtility.AssertNotNull("source", source);
if (length.HasValue)
{
CommonUtility.AssertInBounds("length", length.Value, 1);
if (source.CanSeek && length > source.Length - source.Position)
{
throw new ArgumentOutOfRangeException("length", SR.StreamLengthShortError);
}
}
this.attributes.AssertNoSnapshot();
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.BlockBlob, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();
bool lessThanSingleBlobThreshold = CloudBlockBlob.IsLessThanSingleBlobThreshold(source, length, modifiedOptions, false);
modifiedOptions.AssertPolicyIfRequired();
if (modifiedOptions.ParallelOperationThreadCount.Value == 1 && lessThanSingleBlobThreshold)
{
bool usingEncryption = modifiedOptions.EncryptionPolicy != null;
Stream sourceStream = source;
using (MemoryStream tempStream = !usingEncryption ? null : new MemoryStream())
{
// Encrypt if necessary
if (usingEncryption)
{
modifiedOptions.AssertPolicyIfRequired();
if (modifiedOptions.EncryptionPolicy.EncryptionMode != BlobEncryptionMode.FullBlob)
{
throw new InvalidOperationException(SR.InvalidEncryptionMode, null);
}
ICryptoTransform transform = modifiedOptions.EncryptionPolicy.CreateAndSetEncryptionContext(this.Metadata, false /* noPadding */);
CryptoStream cryptoStream = new CryptoStream(tempStream, transform, CryptoStreamMode.Write);
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(options))
{
source.WriteToSync(cryptoStream, length, null, false, true, tempExecutionState, null);
cryptoStream.FlushFinalBlock();
}
// After the tempStream has been written to, we need to seek back to the beginning, so that it can be read from.
tempStream.Seek(0, SeekOrigin.Begin);
length = tempStream.Length;
sourceStream = tempStream;
}
// Calculate MD5 if necessary
// Note that we cannot do this while we encrypt, it must be a separate step, because we want the MD5 of the encrypted data,
// not the unencrypted data.
string contentMD5 = null;
if (modifiedOptions.StoreBlobContentMD5.Value)
{
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions))
{
StreamDescriptor streamCopyState = new StreamDescriptor();
long startPosition = sourceStream.Position;
sourceStream.WriteToSync(Stream.Null, length, null /* maxLength */, true, true, tempExecutionState, streamCopyState);
sourceStream.Position = startPosition;
contentMD5 = streamCopyState.Md5;
}
}
else
{
// Throw exception if we need to use Transactional MD5 but cannot store it
if (modifiedOptions.UseTransactionalMD5.Value)
{
throw new ArgumentException(SR.PutBlobNeedsStoreBlobContentMD5, "options");
}
}
// Execute the put blob.
Executor.ExecuteSync(
this.PutBlobImpl(sourceStream, length, contentMD5, accessCondition, modifiedOptions),
modifiedOptions.RetryPolicy,
operationContext);
}
}
else
{
using (CloudBlobStream blobStream = this.OpenWrite(accessCondition, modifiedOptions, operationContext))
{
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions))
{
source.WriteToSync(blobStream, length, null /* maxLength */, false, true, tempExecutionState, null /* streamCopyState */);
blobStream.Commit();
}
}
}
}
示例7: UploadFromStreamHelper
/// <summary>
/// Uploads a stream to an append blob. If the blob already exists, it will be overwritten.
/// </summary>
/// <param name="source">A <see cref="System.IO.Stream"/> object providing the blob content.</param>
/// <param name="length">The number of bytes to write from the source stream at its current position.</param>
/// <param name="createNew"><c>true</c> if the append blob is newly created, <c>false</c> otherwise.</param>
/// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the condition that must be met in order for the request to proceed. If <c>null</c>, no condition is used.</param>
/// <param name="options">A <see cref="BlobRequestOptions"/> object that specifies additional options for the request.</param>
/// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param>
internal void UploadFromStreamHelper(Stream source, long? length, bool createNew, AccessCondition accessCondition, BlobRequestOptions options, OperationContext operationContext)
{
CommonUtility.AssertNotNull("source", source);
if (length.HasValue)
{
CommonUtility.AssertInBounds("length", length.Value, 1);
if (source.CanSeek && length > source.Length - source.Position)
{
throw new ArgumentOutOfRangeException("length", SR.StreamLengthShortError);
}
}
this.attributes.AssertNoSnapshot();
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.AppendBlob, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();
using (CloudBlobStream blobStream = this.OpenWrite(createNew, accessCondition, modifiedOptions, operationContext))
{
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions))
{
source.WriteToSync(blobStream, length, null /* maxLength */, false, true, tempExecutionState, null /* streamCopyState */);
blobStream.Commit();
}
}
}
示例8: WriteRange
public virtual void WriteRange(Stream rangeData, long startOffset, string contentMD5 = null, AccessCondition accessCondition = null, FileRequestOptions options = null, OperationContext operationContext = null)
{
CommonUtility.AssertNotNull("rangeData", rangeData);
FileRequestOptions modifiedOptions = FileRequestOptions.ApplyDefaults(options, this.ServiceClient);
bool requiresContentMD5 = (contentMD5 == null) && modifiedOptions.UseTransactionalMD5.Value;
operationContext = operationContext ?? new OperationContext();
Stream seekableStream = rangeData;
bool seekableStreamCreated = false;
try
{
if (!rangeData.CanSeek || requiresContentMD5)
{
ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions);
Stream writeToStream;
if (rangeData.CanSeek)
{
writeToStream = Stream.Null;
}
else
{
seekableStream = new MultiBufferMemoryStream(this.ServiceClient.BufferManager);
seekableStreamCreated = true;
writeToStream = seekableStream;
}
long startPosition = seekableStream.Position;
StreamDescriptor streamCopyState = new StreamDescriptor();
rangeData.WriteToSync(writeToStream, null /* copyLength */, Constants.MaxBlockSize, requiresContentMD5, true, tempExecutionState, streamCopyState);
seekableStream.Position = startPosition;
if (requiresContentMD5)
{
contentMD5 = streamCopyState.Md5;
}
}
Executor.ExecuteSync(
this.PutRangeImpl(seekableStream, startOffset, contentMD5, accessCondition, modifiedOptions),
modifiedOptions.RetryPolicy,
operationContext);
}
finally
{
if (seekableStreamCreated)
{
seekableStream.Dispose();
}
}
}
示例9: UploadFromStreamHelper
/// <summary>
/// Uploads a stream to a file. If the file already exists on the service, it will be overwritten.
/// </summary>
/// <param name="source">The stream providing the file content.</param>
/// <param name="length">The number of bytes to write from the source stream at its current position.</param>
/// <param name="accessCondition">An <see cref="AccessCondition"/> object that represents the access conditions for the file. If <c>null</c>, no condition is used.</param>
/// <param name="options">A <see cref="FileRequestOptions"/> object that specifies additional options for the request.</param>
/// <param name="operationContext">An <see cref="OperationContext"/> object that represents the context for the current operation.</param>
internal void UploadFromStreamHelper(Stream source, long? length, AccessCondition accessCondition, FileRequestOptions options, OperationContext operationContext)
{
CommonUtility.AssertNotNull("source", source);
if (!source.CanSeek)
{
throw new InvalidOperationException();
}
if (length.HasValue)
{
CommonUtility.AssertInBounds("length", length.Value, 1, source.Length - source.Position);
}
else
{
length = source.Length - source.Position;
}
FileRequestOptions modifiedOptions = FileRequestOptions.ApplyDefaults(options, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();
using (CloudFileStream fileStream = this.OpenWrite(length, accessCondition, modifiedOptions, operationContext))
{
using (ExecutionState<NullType> tempExecutionState = CommonUtility.CreateTemporaryExecutionState(modifiedOptions))
{
source.WriteToSync(fileStream, length, null /* maxLength */, false, true, tempExecutionState, null /* streamCopyState */);
fileStream.Commit();
}
}
}
示例10: UploadFromStream
public void UploadFromStream(Stream source, AccessCondition accessCondition = null, BlobRequestOptions options = null, OperationContext operationContext = null)
{
CommonUtils.AssertNotNull("source", source);
this.attributes.AssertNoSnapshot();
BlobRequestOptions modifiedOptions = BlobRequestOptions.ApplyDefaults(options, BlobType.BlockBlob, this.ServiceClient);
operationContext = operationContext ?? new OperationContext();
DateTime? expiryTime = modifiedOptions.MaximumExecutionTime.HasValue
? DateTime.Now + modifiedOptions.MaximumExecutionTime.Value
: (DateTime?)null;
if ((this.ServiceClient.ParallelOperationThreadCount == 1) &&
source.CanSeek &&
((source.Length - source.Position) <= this.ServiceClient.SingleBlobUploadThresholdInBytes))
{
string contentMD5 = null;
if (modifiedOptions.StoreBlobContentMD5.Value)
{
OperationContext tempOperationContext = new OperationContext();
StreamDescriptor streamCopyState = new StreamDescriptor();
long startPosition = source.Position;
source.WriteToSync(Stream.Null, null /* maxLength */, expiryTime, true, true, tempOperationContext, streamCopyState);
source.Position = startPosition;
contentMD5 = streamCopyState.Md5;
}
Executor.ExecuteSync(
this.PutBlobImpl(source, contentMD5, accessCondition, modifiedOptions),
modifiedOptions.RetryPolicy,
operationContext);
}
else
{
using (Stream blobStream = this.OpenWrite(accessCondition, modifiedOptions, operationContext))
{
source.WriteToSync(blobStream, null /* maxLength */, expiryTime, false, true, new OperationContext(), null /* streamCopyState */);
}
}
}