2015-08-19 4 views
0

Я пытаюсь получить все файлы в каталоге, но я хочу, чтобы они были связаны с числами. Теперь у меня есть это:Лучший способ сделать это - GetFiles - C#

string[] ficheiro = Directory.GetFiles(@"C:\Users\David\Documents\Jogos\Jogos de emuladores\Roms GB\", "*.gba"); 
{ 
    Console.WriteLine ("F1" + " - " + Path.GetFileNameWithoutExtension (ficheiro[0])); 
} 
Console.ReadKey(); 

Когда я достигаю 10 файлов я буду иметь ярлык, чтобы перевернуть страницу, чтобы получить больше файлов (10 на странице). Я перечислил все файлы вручную. Например:

Console.WriteLine ("F2" + " - " + Path.GetFileNameWithoutExtension (ficheiro[1])); 

Console.WriteLine ("F3" + " - " + Path.GetFileNameWithoutExtension (ficheiro[2])); 

Есть ли лучший способ сделать это?

+0

Этот вопрос кажется более подходящим для http://codereview.stackexchange.com/, поскольку у вас нет проблем. Вы хотите улучшить качество своего кода. – sstan

+0

На самом деле я думаю, что я делаю это неправильно. Потому что мне придется делать все страницы вручную. – Khoury39

ответ

0

Вам необходимо использовать петлю. Вы не можете делать все «вручную», потому что вы не обязательно знаете, сколько их есть.

var files = Directory.GetFiles(@"C:\Your\Directory\Path", "*.gba"); 
var count = 0; 

foreach (var file in files) 
{ 
    if (count % 10 == 0 && count != 0) 
    { 
     Console.ReadLine(); 
    } 

    count++; 

    Console.WriteLine("F{0} - {1}", count, Path.GetFileNameWithoutExtension(file)); 
} 
Console.ReadLine(); 
+0

Хорошо, это очень хорошо. Но он пропускает первый и второй файлы. И как мне добавить страницы к этому? Вы можете мне это объяснить? Я очень люблю это. Спасибо за время. – Khoury39

+0

На самом деле это не пропуск любого файла, а просто печать неправильного номера. Я обновил его, чтобы исправить эту проблему. – kmc059000

+0

Отлично. Теперь, как я делаю какие-то страницы, вроде этого: я нажимаю на ключ, и в командной строке очищаются первые 10 файлов и даются мне другие файлы, которые у меня есть? как страница? – Khoury39

0

Вы можете перебирать массив с для цикла:

string[] ficheiros = Directory.GetFiles(@"C:\Users\David\Documents\Jogos\Jogos de emuladores\Roms GB\", "*.gba"); 
for (int i = 0; i < ficheiros.Length; i++) 
{ 
    Console.WriteLine("F{0} - {1}", i + 1, Path.GetFileNameWithoutExtension(ficheiros[i])); 
} 
Console.ReadKey(); 

Ключ должен определить повторяющуюся часть и извлечь образец из него:

//only these changed V              V 
Console.WriteLine ("F2" + " - " + Path.GetFileNameWithoutExtension (ficheiro[1])); 
Console.WriteLine ("F3" + " - " + Path.GetFileNameWithoutExtension (ficheiro[2])); 

// just replace them and put it inside an appropriate loop, in this case a for-loop 
for(int i = 0; i < ficheiro.Length; i++) 
    Console.WriteLine ("F" + (i+1) + " - " + Path.GetFileNameWithoutExtension (ficheiro[i])); 
+0

Он дает мне тот же файл 12 раз (количество файлов, которые у меня есть в каталоге. – Khoury39

0
 int i = 0; 
     var ficheiro = from s in Directory.GetFiles(@"C:\temp\", "*.*") 
         select ("F"+ i++ + "-" + s); 
Смежные вопросы