我是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)
不能正常工作说无效论点,我不知道为什么......)
答案 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);