2013-10-09 69 views
-1

所以我在一個目錄中有一堆文件。ListView的字符串數組

他們都命名爲這樣的:

  • 丹尼爾 - 2013-09-10.jpg
  • 彼得 - 2012-05-06.jpg
  • 克里斯蒂安 - 2011-01-08.jpg

所以我得到了所有這些項目的一個目錄,並把它們放到一個數組:

string[] pictures = Directory.GetFiles(@"C:/Pictures", "*.jpg"); 

我得到了一個3列,名稱,日期和文件大小的ListView。

我想從文件名中獲取所有這些信息,然後將它們放入列表視圖中。因此,對於這三個文件,它看起來像這樣:

名稱--------------日期------------------- --------檔案大小
丹尼爾------------- 10。 2013年9月-------- 26 KB
Peter -------------- 06。 2012年5月----------------- 39 KB
Christiane -------- 08。 2011年1月------------ 35 KB

所以我想分割數組中的信息與foreach,然後使用另一個循環來寫入ListView中的數據,但我不'不知道該怎麼做。

任何幫助表示讚賞^^

乾杯

+0

你有點兒要我們爲你做......我們來這裏是爲了幫助你解決特定的問題 - 一個你被困住的地方。 – noelicus

回答

5

我感覺過於慷慨..通常我會說自己開始吧..但這似乎是一件有趣的事情,在睡覺前扔在一起。

class PictureLoader { 
    private readonly string[] _images; 

    public PictureLoader(string path) { 
     _images = Directory.GetFiles(path, "*.jpg"); 
    } 

    public IEnumerable<Tuple<string, string, string>> GetRowData() { 
     foreach (var imagePath in _images) { 
      var extension = Path.GetExtension(imagePath); 
      var fileName = Path.GetFileName(imagePath); 
      var regex = Regex.Match(fileName, @"([A-Za-z]+)-(\d{4}-\d{2}-\d{2})(.[A-Za-z]+)"); 
      var name = regex.Groups[1].Value; 
      var date = DateTime.ParseExact(regex.Groups[2].Value, "yyyy-MM-dd", CultureInfo.InvariantCulture); 

      yield return 
       new Tuple<string, string, string>(name + extension, date.ToString(), 
        (new FileInfo(imagePath).Length/1024).ToString() + " KB"); 
     } 
    } 
} 

用法:

var pictureLoader = new PictureLoader(@"folder here"); 

foreach (var group in pictureLoader.GetRowData()) { 
    var item = new ListViewItem(); 
    item.Text = group.Item1; 
    item.SubItems.Add(group.Item2); 
    item.SubItems.Add(group.Item3); 

    listView1.Items.Add(item); 
} 

結果:

end result

這是給你一個起點。我會留下我想念給你的微小細節。

+0

我意識到這可能是皺眉(因此downvote)。我會刪除它:( –

+0

我undeleted,因爲downvote變成upvote ..有人可能會建議,如果這種答案不受歡迎?這是我的第一個類似.. –

0

我覺得你可以的所有文件去了在foreach。 在每個循環中,您必須通過使用正則表達式來拆分文件的名稱以拆分名稱。

您可以通過代碼獲取的文件大小。

所以你可以在網格中顯示相關數據。

1

foreach很好。然後你需要將字符串解析爲你的變量。然後你需要添加到列表視圖。嘗試谷歌搜索「列表查看c#添加項目」