【发布时间】:2011-04-13 22:27:14
【问题描述】:
我正在编写一个创建文件“目录”的应用程序,该目录可以归因于其他元数据文件,例如附件和缩略图。
我正在尝试将接口抽象为目录,以使目录的使用者不需要了解用于存储文件的底层文件系统。所以我创建了一个名为IFileSystemAdaptor 的接口,如下所示。
public interface IFileSystemAdaptor:IDisposable
{
void WriteFileData(string fileName, Stream data);
Stream ReadFileData(string filename);
void DeleteFileData(string filename);
void ClearAllData();
void WriteMetaFileData(string filename, string path, Stream data);
Stream ReadMetaFileData(string filename, string path);
void DeleteMetaFileData(string filename, string path);
void ClearMetaFilesData(string filename);
}
基本上,我的 IFileSystemAdaptor 接口公开了一个平面文件列表,这些文件也可以与其他元数据文件相关联。
如您所见,我正在使用对通用 Stream 对象的引用来将接口抽象为文件数据。这样,目录的一个实现可以从硬盘返回文件,而另一个可以从网络服务器返回数据。
现在我想弄清楚如何让我的程序不让流打开。对于哪些成员应该关闭流,是否有经验法则?流的消费者应该关闭它,还是应该由最初创建流的成员负责关闭它。
【问题讨论】: