2017-09-24 81 views
0

我有一個文件夾中的5張圖片內C:\顯示在特定文件夾每個畫面,以便

中的圖片被命名爲PIC(1)〜(5)

我想要的程序,以顯示該文件夾內的第一張照片然後轉到下一張。

我可以通過聲明一個字符串「路徑」和一個int「nextNumb」並在定時器中構建一個代碼,其中每當代碼運行時「nextNumb」將增加,並將路徑從(1)更改爲2)到(3)等等...

但是這樣做效率不高我想以某種方式讀取/打開文件夾中的圖片並按照它們的設置順序顯示它們。

回答

0

使用此命令可以讀取目錄中的所有文件「Directory.GetFiles(targetDirectory);」

https://msdn.microsoft.com/de-de/library/07wt70x2(v=vs.110).aspx

這裏是和排序號碼提取文件的數量

static void Main() 
{ 
    var files = Directory.GetFiles(@"your Path"); 
    var items = files.OrderBy(o => ExtractNumber(o)).ToList(); 
} 

private static int ExtractNumber(string filePath) 
{ 
    //file name structure -> "pic(1).jpg" 

    var startIndex = filePath.IndexOf('('); 
    if (startIndex == -1) 
    { 
     return -1; 
    } 

    var endIndex = filePath.IndexOf(')', startIndex); 
    if (endIndex == -1) 
    { 
     return -1; 
    } 

    var tempNumber = filePath.Substring(startIndex + 1, endIndex - startIndex - 1); 
    if (int.TryParse(tempNumber, out int fileNumber)) 
    { 
     return fileNumber; 
    } 

    return -1; 
} 
+0

我想一個例子,但似乎是出了問題,每當我讀到的所有文件在目錄中,創建一個名爲Directory.GetFiles(targetDirectory)的var文件路徑,並嘗試使用filepath中的foreach文件讀取每個文件,開始正常顯示第一張圖片,然後跳轉到最後一張。我嘗試了更多圖片(300)。它從1跳到10,然後從10跳到100,它一直在做這些奇怪的跳躍。延遲任務並沒有幫助 –

+0

此外,當數字爲100或更多時,由於某種原因繼續返回,它會變爲100..101 ... 102 ...到109,然後返回到11,並在一段時間後恢復下一個數字是110 –

+0

@PedroRibeiro:這聽起來像將數字排序爲字符串時的正常排序行爲。 _示例_ var numbers = new List {「1」,「9」,「10」,「90」,「100」,「109」,「110」};' 'var sortNumbers = numbers.OrderBy(t = > _sortNumbers:_ OrderedEnumerable {「1」,「10」,「100」,「109」,「110」,「9」,「90」}' –

相關問題