gpt4 book ai didi

c# - 这是在 Windows 10 Universal App 中将流保存到文件的好方法吗?

转载 作者:行者123 更新时间:2023-11-30 18:22:59 24 4
gpt4 key购买 nike

我使用这段代码将流保存到文件

StorageFolder coverImageFolder = await StorageFolder.GetFolderFromPathAsync(AppInfo.LF_CoverFolder_Path);
string coverName = System.IO.Path.GetRandomFileName();

// Create an instance of ArchiveReader.
ArchiveReader reader = new ArchiveReader(pickedFile);

// Get a first image (stream) from archive.
using (var imageStream = await reader.GetFirstEntryStream()) { // IRandomAccessStream

// Save ImageStream to 'CoverImage' folder
StorageFile coverFile = await coverImageFolder.CreateFileAsync(coverName);

var coverStream = await coverFile.OpenAsync(FileAccessMode.ReadWrite); // IRandomAccessStream
using (var coverOutputStream = coverStream.AsStreamForWrite()) { // Stream
using (var imageInputStream = imageStream.AsStreamForRead()) { // Stream
await imageInputStream.CopyToAsync(coverOutputStream);
await coverOutputStream.FlushAsync();
}
}

它按应有的方式工作。但是,我想知道这是将 .NET 流保存到 Universal App 文件的好方法还是正确方法?

最佳答案

如果我没理解错的话,您是在尝试将 imageStream(IRandomAccessStream) 保存到 coverFile(StrorageFile)。

AsStreamForWrite 和 AsStreamForRead 都是 .NET 中的 Windows 运行时扩展方法。在这种情况下,您不需要将 Windows Runtime Stream 转换为 .NET IO 流(这将需要一些额外的性能成本)。我将建议您使用以下方式(不使用 .NET 类库)。

        var src = await KnownFolders
.PicturesLibrary
.GetFileAsync("210644575939381015.jpg")
.AsTask();

var target = await KnownFolders
.PicturesLibrary
.CreateFileAsync("new_file.jpg")
.AsTask();


using (var srcStream = await src.OpenAsync(FileAccessMode.Read))
using (var targetStream = await target.OpenAsync(FileAccessMode.ReadWrite))
using (var reader = new DataReader(srcStream.GetInputStreamAt(0)))
{


var output = targetStream.GetOutputStreamAt(0);

await reader.LoadAsync((uint)srcStream.Size);

while (reader.UnconsumedBufferLength > 0)
{
uint dataToRead = reader.UnconsumedBufferLength > 64
? 64
: reader.UnconsumedBufferLength;

IBuffer buffer = reader.ReadBuffer(dataToRead);

await output.WriteAsync(buffer);
}

await output.FlushAsync();
}

关于c# - 这是在 Windows 10 Universal App 中将流保存到文件的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32995855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com