抱歉,疏忽了.写一个组件读取文件获得的是一个istream流,不是stream.
好象要继承istream.

解决方案 »

  1.   

    FileStream fs = FileStream ("文件名", FileMode.Open);
      

  2.   

    我用过了可是文件并没有显示出来,也不知道是怎么回事。我把代码贴出来吧,大家帮忙给我指下问题。
    下面的是IStreamImpl.cs
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices.ComTypes;
    using System.IO;namespace HUDStream
    {
        public class MetadataStream:IStream
        {
            MemoryStream MetaDataStream;
            public void LoadFromFile(string FileName)
            {
                if (MetaDataStream != null)
                {
                    MetaDataStream.Dispose();
                }
                MetaDataStream = new MemoryStream();
                FileStream fs = File.Open(FileName, FileMode.Open);
                    //new FileStream(FileName, FileMode.Open);
                fs.Seek(0, SeekOrigin.Begin);
                byte[] bytes;
                bytes = new byte[fs.Length];
                fs.Read(bytes, 0, (int)fs.Length);
                fs.Dispose();
                MetaDataStream.Write(bytes, 0, bytes.Length);
            }        #region IStream 成员        public void Clone(out IStream ppstm)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void Commit(int grfCommitFlags)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void CopyTo(IStream pstm, long cb, IntPtr pcbRead, IntPtr pcbWritten)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void LockRegion(long libOffset, long cb, int dwLockType)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void Read(byte[] pv, int cb, IntPtr pcbRead)
            {
                if (MetaDataStream != null)
                {
                    int byteReaded = MetaDataStream.Read(pv, (int)MetaDataStream.Position, cb);
                    unsafe
                    {
                        if (pcbRead != IntPtr.Zero)
                        {
                            int* ps = (int*)pcbRead;
                            *ps = byteReaded;
                        }
                    }
                }
            }        public void Revert()
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void Seek(long dlibMove, int dwOrigin, IntPtr plibNewPosition)
            {
                long pos = MetaDataStream.Seek(dlibMove, (SeekOrigin)dwOrigin);
                unsafe
                {
                    if (plibNewPosition != IntPtr.Zero)
                    {
                        int* ps = (int*)plibNewPosition;
                        *ps = (int)pos;
                    }
                }
            }        public void SetSize(long libNewSize)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void Stat(out STATSTG pstatstg, int grfStatFlag)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void UnlockRegion(long libOffset, long cb, int dwLockType)
            {
                throw new Exception("The method or operation is not implemented.");
            }        public void Write(byte[] pv, int cb, IntPtr pcbWritten)
            {
                throw new Exception("The method or operation is not implemented.");
            }        #endregion
        }
    }
    然后又写一个接口为webform调用。
    下面是MetaDataLoader.cs代码:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Runtime.InteropServices.ComTypes;
    using System.IO;namespace HUDStream
    {
        public interface IMetaDataLoader
        {
            IStream LoadMetaData(string FileName);
        }    public class MetaDataLoader : IMetaDataLoader
        {
            public IStream LoadMetaData(string FileName)
            {
                MetadataStream metaDataStream;
                metaDataStream = new MetadataStream();
                metaDataStream.LoadFromFile(FileName);
                return metaDataStream;
            }
        }
    }
    在这里获得一个stream。也就是我最终想要得到的。但结果调试metaDataStream有结果可是就是无法显示图片。这个图片用delphi的loadformfile()可以正确输出显示的。
    那位高人知道症结所在请多多帮忙。
    qq:115415639
    多谢,静候佳音。