【问题标题】:how do I copy a folder to a USB? C#如何将文件夹复制到 USB 中? C#
【发布时间】:2012-08-12 19:21:21
【问题描述】:

我正在开发一个项目,该项目将使用我计算机中的一些文件自动更新我的 USB。

该程序在启动时工作并监视插入计算机的任何 USB 或 CD。我的程序是然后将一些文件夹及其文件复制到 USB。我无法将文件夹复制到 USB 中,希望能得到一些帮助,谢谢。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Diagnostics;




namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

 // this section starts the timer so it can moniter when a USB or CD is inserted into
 // the computer.    
//==================================================================================
        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 100;
            timer1.Start();

            WindowState = FormWindowState.Minimized;
//===================================================================================            
        }

        private void timer1_Tick(object sender, EventArgs e)
        {

 // this section checks to see if there is a drive type of USB and CDs.          

            foreach(DriveInfo drive in DriveInfo.GetDrives())
            {
                if (drive.DriveType == DriveType.Removable)
                {
// this part is supposed to copy a folder from the PC and paste it to the USB
//==============================================================================                    

//==============================================================================                   
                }

                if (drive.DriveType == DriveType.CDRom)
                {
// same thing but for CDs.
//==============================================================================

//==============================================================================
                }
            }


        }
// this section opens a folderbrowserdialog that the users can use to access their folders 
//and put them into a listbox so when a USB or CD is inserted it will copy those files into
// the storage devices.
//==============================================================================
        private void button1_Click(object sender, EventArgs e)
        {
            if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
            {
                listBox1.Items.Add(folderBrowserDialog1.SelectedPath);
//==============================================================================
            }
        }
    }
}

【问题讨论】:

  • 你尝试了什么?
  • 什么问题?你能展示你的代码吗?
  • 您必须在目标中创建文件夹结构,然后复制文件。详情见链接stackoverflow.com/questions/1066674/…
  • 我在代码中加载了一些 cmets,希望对您有所帮助。

标签: c# winforms windows-7 copy directory


【解决方案1】:

【讨论】:

    【解决方案2】:

    Here是怎么做到的:

    private static void DirectoryCopy(string sourceDirName, string destDirName, bool copySubDirs)
    {
        DirectoryInfo dir = new DirectoryInfo(sourceDirName);
        DirectoryInfo[] dirs = dir.GetDirectories();
    
        if (!dir.Exists)
        {
            throw new DirectoryNotFoundException(
                "Source directory does not exist or could not be found: "
                + sourceDirName);
        }
    
        if (!Directory.Exists(destDirName))
        {
            Directory.CreateDirectory(destDirName);
        }
    
        FileInfo[] files = dir.GetFiles();
        foreach (FileInfo file in files)
        {
            string temppath = Path.Combine(destDirName, file.Name);
            file.CopyTo(temppath, false);
        }
    
        if (copySubDirs)
        {
            foreach (DirectoryInfo subdir in dirs)
            {
                string temppath = Path.Combine(destDirName, subdir.Name);
                DirectoryCopy(subdir.FullName, temppath, copySubDirs);
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      使用 File.Copy 并使用 USB 驱动器号作为目标。例如:

      string sourceDir = @"c:\current";
      string backupDir = @"f:\archives\2008";
      
      try
      {
          string[] picList = Directory.GetFiles(sourceDir, "*.jpg");
          string[] txtList = Directory.GetFiles(sourceDir, "*.txt");
      
          // Copy picture files. 
          foreach (string f in picList)
          {
              // Remove path from the file name. 
              string fName = f.Substring(sourceDir.Length + 1);
      
              // Use the Path.Combine method to safely append the file name to the path. 
              // Will overwrite if the destination file already exists.
              File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName), true);
          }
      
          // Copy text files. 
          foreach (string f in txtList)
          {
      
              // Remove path from the file name. 
              string fName = f.Substring(sourceDir.Length + 1);
      
              try
              {
                  // Will not overwrite if the destination file already exists.
                  File.Copy(Path.Combine(sourceDir, fName), Path.Combine(backupDir, fName));
              }
      
              // Catch exception if the file was already copied. 
              catch (IOException copyError)
              {
                  Console.WriteLine(copyError.Message);
              }
          }
      
          // Delete source files that were copied. 
          foreach (string f in txtList)
          {
              File.Delete(f);
          }
          foreach (string f in picList)
          {
              File.Delete(f);
          }
      }
      
      catch (DirectoryNotFoundException dirNotFound)
      {
          Console.WriteLine(dirNotFound.Message);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-03-02
        • 1970-01-01
        • 2023-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多