2011-01-10 138 views
1

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

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; 
    } 

回答

3

你需要调用Open并通过FileShare.ReadWrite

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

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

相关问题