下载文件并创建与主机相同的文件夹结构

本文关键字:文件夹 结构 主机 文件 创建 下载 | 更新日期: 2023-09-27 18:09:39

我有一个配置文件,其中包含我想要下载的uri列表。例如,

  http://xyz.abc.com/Dir1/Dir3/sds.txt
  http://xyz.abc.com/Dir2/Dir4/jhjs.txt
  http://xyz.abc.com/Dir1/itr.txt

我想读取配置文件,并复制每个URL,但同时在主机上创建相同的目录结构。例如,对于配置文件中的第一行,我想在本地机器上创建目录结构Dir1/Dir3(如果它不存在),然后将sds.exe复制到…/Dir1/Dir3/

我如何在c#中做到这一点?

我现在有的是:

string myStringWebResource; //Read this from the config file
System.IO.StreamReader file =
new System.IO.StreamReader("config.txt");
// Read the config file line by line
while ((myStringWebResource = file.ReadLine()) != null)
{
    // Create a new WebClient instance.
    using (WebClient myWebClient = new WebClient())
    {
        //How do I keep the original filename, e.g. sds.txt
        string outputFilename = @"" + ???";
        Console.WriteLine("Downloading ...");
        // Download the Web resource and save it into
        // the current filesystem folder.
        try
        {
            myWebClient.DownloadFile(myStringWebResource, outputFilename);
            Console.WriteLine("Successful");
        }
        catch (WebException e)
        {
            Console.WriteLine("Fail" + e.Message);
        }
    }  
}

虽然这可以让我下载配置文件中的所有文件,

  1. 我有这个问题,必须命名后下载,我怎么能保留他们的原始名称?
  2. 所有的文件被下载到同一个文件夹。如何从主机复制文件夹结构?

下载文件并创建与主机相同的文件夹结构

我的建议是把主机过滤掉。然后拆分/上的每个剩余字符串。然后构建一个以字符串[]作为参数的方法来创建目录结构。使用原始路径(不带主机)移动该目录中带有filename(数组中的最后一项)的文件。

如果主机是可变的,删除第三个/之前的所有内容。