从子文件夹复制并覆盖到父文件夹中的另一个子文件夹

问题描述 投票:0回答:1

我正在尝试为 LetahlCompany mod 制作 dll。目标是将音频文件从我的 mod 复制/粘贴到另一个 mod,这样当我添加更多音频时,人们只需单击“更新”即可。 我不能只设置目录 (c:/user/mod/files),因为文件正在使用配置文件 (c:/user/profiles/mod/files)。

所以我想像这样复制文件:

  1. :配置文件\Parent\MyModSub\FILES
  1. :配置文件\Parent\OtherModSub\FILES

所以在这种情况下它可以是“Profile1”或“Profile2”,所以它不像复制文件目录那么简单

我在编码方面完全是菜鸟,我试图理解我在做什么,但这很难。做一件事有多种方法,所以我不知道在做研究时我到底在寻找什么。

所以这是我认为可以按照我想要的方式工作的代码。

namespace SoundsMove
{
    class Program
    {
        static void Main(string[] args)
        {
            string ModSource = @"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\MyMod\MySounds\";
            string ModDest = @"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\TheMod\HisSounds\";

            var allFiles = Directory.GetFiles(ModSource);
            foreach (var file in allFiles)
            {
                var FileModDest = ModDest + Path.GetFileNameWithoutExtension(file) + Path.GetExtension(file);
                File.Move(file, FileModDest);
            }
        }
    }
}

但正如我所说,该配置文件可以命名为任何名称,对我来说它是“Hide'N'Seek”。 你可以看到我必须返回 2 个parent 文件夹,然后找到 2 个 subs solfers。 这是我在 youtube 上找到的代码,我没有找到方法让 2 个父母回来然后再次移动 2 个子。我什至不知道如何编码以避免将整个路径写入我的文件。

c#
1个回答
0
投票
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        string sourceFolder = @"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\MyMod\MySounds\";
        string destinationFolder =@"C:\Users\SpLinTeR\AppData\Roaming\r2modmanPlus-local\LethalCompany\profiles\Hide'N'Seek\BepInEx\plugins\TheMod\HisSounds\";

        SyncFolders(sourceFolder, destinationFolder);
    }

static void SyncFolders(string sourceFolder, string destinationFolder)
{
    // Create the destination folder if it doesn't exist
    if (!Directory.Exists(destinationFolder))
    {
        Directory.CreateDirectory(destinationFolder);
    }

    // Get all files in the source folder
    var sourceFiles = Directory.GetFiles(sourceFolder);

    foreach (var sourceFile in sourceFiles)
    {
        string fileName = Path.GetFileName(sourceFile);
        string destFile = Path.Combine(destinationFolder, fileName);

        // Copy the file if it doesn't exist or if it is newer than the destination file
        if (!File.Exists(destFile) || File.GetLastWriteTime(sourceFile) > File.GetLastWriteTime(destFile))
        {
            File.Copy(sourceFile, destFile, true);
            Console.WriteLine($"Copied: {fileName}");
        }
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.