2011-01-10 139 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從此流中加載圖像。

相關問題