C#如何使用Filestream读取目录中的所有jpeg文件,以便文件不被锁定?

时间:2011-01-10 14:18:35

标签: c#

如何使用Filestream读取目录中的所有jpeg文件,以便文件不被锁定?我目前的代码如下,没有提到Filestream,因为我无法让它工作。非常感谢您的帮助。

    public Form1()
    {
        InitializeComponent();

        images = new List<Image>();
        // add images

        DirectoryInfo di = new DirectoryInfo(@"\\server\files\");
        FileInfo[] finfos = di.GetFiles("*.jpg", SearchOption.TopDirectoryOnly);
        foreach (FileInfo fi in finfos)
            images.Add(Image.FromFile(fi.FullName));

   }

    private void buttonNext_Click(object sender, EventArgs e)
    {
        index++;
        if (index < 0 || index >= images.Count)
            index = 0;
        pictureBox1.Image = images[index];
        int count = index + 1;
        labelCount.Text = "Showing " + count.ToString() + " of " + images.Count;
    }

2 个答案:

答案 0 :(得分:3)

您需要致电Open并传递FileShare.ReadWrite

using (var stream = fi.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    images.Add(Image.FromStream(stream));

答案 1 :(得分:1)

锁定文件的Image.FromFile方法。作为替代方案,您可以尝试将文件内容读入缓冲内存流,然后使用Image.FromStream从此流加载图像。