2011-08-19 94 views
0

我正在处理一个C#脚本,它必须在运行时访问一个随机文件,问题是这些文件正在由另一个源生成,我无法知道它们的意思名字,我已经解决了第一个问题是获得多少个文件中有我的工作目录:获取文件名与系统IO

  s = @"C:\Imagenes"; 
      System.IO.DirectoryInfo d = new System.IO.DirectoryInfo(s); 
    int files; 
    files = d.GetFiles().Length; 
    Debug.Log(files.ToString()); 
    return files; 

现在我想在我的工作dicrectory进入电影一个随机元素,但因为我没有一个线索他们的名字是什么,有没有办法通过索引或其他东西来获得他们的名字?

+0

HTTP(除文件长度的计算得到一个rondom一个中被删除):// MSDN。 microsoft.com/en-us/library/4cyf24ss.aspx –

+0

-1对不起,但没有足够的信息在问题中。你已经解决了第一个问题,但第二个问题是什么?知道这些文件名不会有帮助,它们会随机分配(BTW GetFiles()返回文件夹中文件名的数组)。你需要最新创建的文件吗?最近访问过的文件?你想在文件夹中创建一个新文件时引发一个事件吗?(为此使用'FileSystemWatcher'类) –

+0

Marco:我不明白知道文件名是如何帮助你的。你可以_randomly_选择一个文件,但不能保证它会是正确的文件。我在这里还是我的思想错了?如果我错了,你能告诉我为什么吗?如果我是对的,想想你真正需要什么,并更新问题?谢谢。 –

回答

6

DirectoryInfo.GetFiles将为您提供fileInfo对象的数组。从您可以使用FileInfo.Name

获取文件名
+0

如果随机分配的文件名称,知道文件名称如何帮助提问者? –

+0

嗯,我以为他想知道随机创建的filesnames。 – Zenwalker

+0

是的,它确实有帮助,问题在于名称不遵循'模式'或任何可用于通过代码中的名称访问文件的内容,但我确实需要知道名称。 – Samssonart

1

您需要使用FileInfo对象返回的通过d.GetFiles()

DirectoryInfo d = new DirectoryInfo("c:\\path"); 

foreach (FileInfo file in d.GetFiles()) 
{ 
    string name = file.Name; 
} 
0

不知道为什么你想有一个随机文件,但这应该工作

int length = d.GetFiles().Length; 
Random rnd = new Random(); 
var randomFile = d.GetFiles().ElementAt(rnd.Next(0, length-1);