gpt4 book ai didi

c# - 创建一个没有文件的文件流 C#

转载 作者:行者123 更新时间:2023-11-30 12:46:28 27 4
gpt4 key购买 nike

是否可以在没有实际文件的情况下创建文件流?

我会尽力解释:

我知道如何从真实文件创建流:

FileStream s = new FileStream("FilePath", FileMode.Open, FileAccess.Read);

但是我可以用一个假文件创建一个 fileStream 吗?

含义:
为某个文件对象(有这样的东西吗?)定义名称、类型、大小等属性,没有内容,只有所有属性,
然后从这个"file"创建一个文件流?得到类似于上面代码的结果?

编辑。

我正在使用具有该代码的 API 示例:

        FileStream s = new FileStream("FilePath", FileMode.Open, FileAccess.Read);
try
{
SolFS.SolFSStream stream = new SolFS.SolFSStream(Storage, FullName, true, false, true, true, true, "pswd", SolFS.SolFSEncryption.ecAES256_SHA256, 0);
try
{
byte[] buffer = new byte[1024*1024];
long ToRead = 0;
while (s.Position < s.Length)
{
if (s.Length - s.Position < 1024*1024)
ToRead = s.Length - s.Position;
else
ToRead = 1024 * 1024;
s.Read(buffer, 0, (int) ToRead);
stream.Write(buffer, 0, (int) ToRead);
}

所以它基本上是在某处写入文件流“s”。
我不想获取现有文件并写入它,但我想“创建”一个没有内容的不同文件(我不需要内容)但具有真实文件的属性,例如大小,名称, 输入

最佳答案

显然,你想要一个 FileStream (显式地使用其 FileStream 特定的属性,例如 Name )不指向文件。

据我所知,基于 FileStream 的实现,这是不可能的。

但是,创建具有所需属性的包装类将是一个简单的解决方案:

  • 您可以在包装器中存储您需要的所有属性。
  • 包装器可以包装任意 Stream ,因此您可以在 FileStreamMemoryStream 之间自由选择,或任何其他流类型。

这是一个例子:

public class StreamContainer
{
public StreamContainer(string name, Stream contents)
{
if (name == null) {
throw new ArgumentNullException("name");
}
if (contents == null) {
throw new ArgumentNullException("contents");
}

this.name = name;
this.contents = contents;
}

private readonly string name;

public string Name {
get {
return name;
}
}

private readonly Stream contents;

public Stream Contents {
get {
return contents;
}
}
}

当然,您可以为各种流类型添加一些礼貌的创建方法(如上述类中的静态方法):

public static StreamContainer CreateForFile(string path)
{
return new StreamContainer(path, new FileStream(path, FileMode.Open, FileAccess.Read));
}

public static StreamContainer CreateWithoutFile(string name)
{
return new StreamContainer(name, new MemoryStream());
}

在您的应用程序中,无论您想在何处使用此类命名流,都应传递 StreamContainer 而不是直接期待 Stream

关于c# - 创建一个没有文件的文件流 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242011/

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