如何在文件中打开上次修改的文档?

时间:2016-06-03 08:39:00

标签: c#

我是C#的新手。我有这段代码,不知道为什么它不起作用。

我在file中有一个文档,我没有file name,但我知道它是此目录中最近更改的file

我想打开它(实际上我只是在另一个文件夹中复制并通过它)但我不确定这个文件是否被选中(因为我无法打开它)

谢谢。

private void export_Click(object sender, EventArgs e)
{
    var directory = new DirectoryInfo(@"C:\Users\Admin\files");
    var myFile = (from f in directory.GetFiles() 
        orderby f.LastWriteTime descending select f).First();
    myFile.OpenRead();
}

PS System.Diagnostics.Process.Start(myFile)不能正常工作说无效论点,我不知道为什么......)

3 个答案:

答案 0 :(得分:1)

如果您只想将该文件复制到另一条路径,此代码应该适合您:

private void export_Click(object sender, EventArgs e)
{
     string originPath = @"C:\Users\Admin\files";
     string destinationPath = @"d:\";
     var directory = new DirectoryInfo(originPath);
     var myFile = (from f in directory.GetFiles()
                   orderby f.LastWriteTime descending
                   select f).First();

     File.Copy(Path.Combine(originPath, myFile.Name),
               Path.Combine(destinationPath,myFile.Name));
}

答案 1 :(得分:0)

尝试

var myFile = directory.GetFiles()
             .OrderByDescending(f => f.LastWriteTime)
             .First();

public static FileInfo GetNewestFile(DirectoryInfo directory) {
   return directory.GetFiles()
       .Union(directory.GetDirectories().Select(d => GetNewestFile(d)))
       .OrderByDescending(f => (f == null ? DateTime.MinValue : f.LastWriteTime))
       .FirstOrDefault();                        
}

只需按以下方式调用:

FileInfo newestFile = GetNewestFile(new DirectoryInfo(@"C:\directory\"));

就是这样。如果目录为空,则返回FileInfo实例或null。 并且还要检查特定文件夹的access rights

答案 2 :(得分:0)

实际上,即使使用Process.Start(),它也适用于我。 但我选择文件夹"C:\Users\admin\documents",但如果文件夹存在并且您有权从中读取文件,则无关紧要。

var directory = new DirectoryInfo(@"C:\Users\admin\documents");
var myFile = (from f in directory.GetFiles()
              orderby f.LastWriteTime descending
              select f).First();
Process.Start(myFile.FullName);