C#将文件夹中的最后一个文件复制到另一个生成的文件夹

时间:2018-06-09 17:42:44

标签: c# .net

我正在尝试从路径中获取最新文件并将其复制,然后将其粘贴到生成的文件夹中。

这是我到目前为止所尝试的:

    // This Method is called if the function/method CopyContent is invoked by the user or a bound event.
// Return true, if this component has to be revalidated!
public bool OnCopyContent(int arg)
{
    // Get latet file from the specificed Folder
    var directory = new DirectoryInfo(@""+sourceFolderPath);
    var myFile = (from f in directory.GetFiles()
            orderby f.LastWriteTime descending
            select f).First();


    // Newly Created Folder Name
    string generatedFolderName = destinationFolderName;


    // Newly Creted Folder Path (i.e C://Users/Desktop) Cretge it on desktop with name "Paste me here " 
    string generatedPathString = System.IO.Path.Combine(destinationFolderPath, generatedFolderName);


    if (!File.Exists(generatedPathString))
        System.IO.Directory.CreateDirectory(generatedPathString);



    // Copy the Latet file to the newly Created Folder on the Desktop
    string destFile = Path.Combine(@""+destinationFolderPath, myFile.Name);



    File.Copy(myFile.FullName, destFile, true);

    return false;
}

我想做的是

1:我有指定文件夹路径,我想根据时间复制它的最新文件

2:在桌面上创建名为“NewlyAdded”的新文件夹

3:将指定文件夹中的复制文件粘贴到新创建的文件夹

3 个答案:

答案 0 :(得分:1)

现在我的问题是如何复制

简单地说:取文件名,然后将目标文件夹传递给字符串, 然后将file.FullName传递给Copy()方法并将其复制。 此代码经过测试和使用。

编辑:添加一行以生成文件夹(如果不存在),并将文件复制到该文件夹​​。

 string newFolder = "NewlyAdded";
            string path = System.IO.Path.Combine(
               Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
               newFolder
            );

            if (!System.IO.Directory.Exists(path))
            {
                System.IO.Directory.CreateDirectory(path);
             }
                    var directory = new DirectoryInfo(@"Sourcd folder");
            var myFile = (from f in directory.GetFiles()
                          orderby f.LastWriteTime descending
                          select f).First();

            string destFile = Path.Combine(path, myFile.Name);
            System.IO.File.Copy(myFile.FullName, destFile, true);

如果存在,则作为最后一个参数的覆盖是否覆盖。

答案 1 :(得分:0)

查看文档,第一个参数是原始文件的路径......

https://msdn.microsoft.com/en-us/library/9706cfs5(v=vs.110).aspx

  

我试图复制它但是我现在不确定如何在

中传递它

您使用原始文件路径,而不是FileInfo本身!

像这样:

        var directory = new DirectoryInfo(@"C:\");
        FileInfo myFile = (from f in directory.GetFiles()
                      orderby f.LastWriteTime descending
                      select f).First();
        string filePath = myFile.FullName;

您使用此filePath变量,而不是您当前正在使用的FileInfo实例。

答案 2 :(得分:0)

  • 如果你没有复制字符串文件,那么打开你想要以二进制读取(rb)复制的当前文件并将其存储在变量中。
  • 使用二进制写入

    在特定目录中写入该文件后

    可能会帮助您