我会试着解释一下:
我知道如何从真实文件创建流:
fileStream s = new fileStream("filePath",fileMode.Open,fileAccess.Read);
但我可以创建一个伪文件的fileStream吗?
含义:
定义属性,如名称,类型,大小,以及其他任何必要的东西,对某些文件对象(有这样的东西吗?),没有内容,只有所有的属性,
然后从这个“文件”创建一个fileStream?得到的结果与上面的代码类似?
编辑.
我正在使用具有该代码的API示例:
fileStream s = new fileStream("filePath",fileAccess.Read); try { SolFS.solFsstream stream = new SolFS.solFsstream(Storage,Fullname,true,false,"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,(int) ToRead); stream.Write(buffer,(int) ToRead); }
所以它基本上是在某处写入fileStream“s”.
我不想拿一个现有的文件写它,但我想“创建”一个没有内容的不同文件(我不需要内容),但要拥有真实文件的属性,如大小,名称,键入
FileStream
(明确使用其特定于fileStream的属性,如 Name
),它不指向文件. 据我所知,这是不可能基于fileStream的实现.
但是,创建具有所需属性的包装类将是一个简单的解决方案:
>您可以在包装器中存储所需的所有属性.
>包装器可以包装任意Stream
,因此您可以自由选择fileStream,MemoryStream
或任何其他流类型.
这是一个例子:
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,fileAccess.Read));}public static StreamContainer CreateWithoutfile(string name){ return new StreamContainer(name,new MemoryStream());}
在您的应用程序中,无论您想要使用这样的命名流,都要传递StreamContainer,而不是直接期望Stream.
总结以上是内存溢出为你收集整理的创建没有文件c#的文件流全部内容,希望文章能够帮你解决创建没有文件c#的文件流所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)