2013-06-18 30 views
-5

我想创建一个方法,它将最新创建的文件返回给目录中的C# ,并使用该目录System.IO命名空间中的.GetFiles()方法。也许有可能在没有LINQ的情况下使它与NET 2.0兼容。如果FilePath可以作为字符串返回而不是作为文件对象(如果可能的话),那么好处也是如此 构造应该如下所示,但我怎么才能看到最新的文件?如何在C#中只使用System.IO命名空间中的GetFiles获取目录中的最新创建文件

public static string NewestFileofDirectory(string DirectoryName) 
{ 
foreach(string File in Directory.GetFiles(DirectoryName)) 
{ 
    if(new FileInfo(File).CreationDate > ???) //here I stuck 
    { 
    //interesting what would be here... 
    } 
} 
} 

回答

3

可以使用FileInfoDirectoryInfo类做到这一点。您将首先获取指定目录中的所有文件,然后将它们的LastWriteTime与其他人进行比较,因此相比之下,您可以获取最近写入或最近的文件。该方法的代码为Here is

/// <summary> 
/// Returns recently written File from the specified directory. 
/// If the directory does not exist or doesn't contain any file, null is returned. 
/// </summary> 
/// <param name="directoryInfo">Path of the directory that needs to be scanned</param> 
/// <returns></returns> 
public static string NewestFileofDirectory(string directoryPath) 
{ 
    DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath); 
    if (directoryInfo == null || !directoryInfo.Exists) 
     return null; 

    FileInfo[] files = directoryInfo.GetFiles(); 
    DateTime recentWrite = DateTime.MinValue; 
    FileInfo recentFile = null; 

    foreach (FileInfo file in files) 
    { 
     if (file.LastWriteTime > recentWrite) 
     { 
      recentWrite = file.LastWriteTime; 
      recentFile = file; 
     } 
     } 
     return recentFile.Name; 
} 
+0

什么是错误? –

+0

@feedwall是的,这个错误是因为我返回FileInfo对象而不是文件的名称。 –

+0

@feedwall检查我的答案,现在我已经将文件的名称返回为'return recentFile.Name;',现在它会编译得很好。 –

3

锅板搜索正在上升。感谢上帝对于LINQ :)

var minTime = DateTime.MinValue; 

string theFile = null; 

foreach (var entry in Directory.GetFiles(dirName)) 
{ 
    if (File.GetCreationTimeUtc(entry) > minTime) 
    { 
     minTime = File.GetCreationTimeUtc(entry); 
     theFile = entry; 
    } 
} 
+0

添加“使用System.IO;”那有用吗?该方法在.Net 2.0中(根据MSDN),所以这不是问题。 – Vivek

+1

@feedwall'dirName'只是一个虚拟变量,他用来表示任何你一直在呼叫你的目录名称。我想你的情况是'directoryPath'。努力了解代码在做什么。 – jszigeti

+0

这将是'theFile'。 ['var'](http://msdn.microsoft.com/en-us/library/bb383973.aspx)只是表示变量的类型由编译器确定。这就好像他说'string'一样,但是很多人在没有对变量做任何特殊处理时倾向于使用'var'快捷键。 – jszigeti

相关问题