Central_IT Ответов: 1

Vb.net file. copy-только копирование 1 файла в целевую папку


Привет,

У меня есть папка с текстовыми файлами, которые я хочу скопировать в другую папку. Прямолинейная копия vb. Когда я перехожу через код, нет проблем, они копируют.

Когда я запускаю exe-файл, он копирует только 1 файл.

Кто - нибудь сталкивался с этой проблемой? Версия vb-visual studio 2013. Я бы спросил, есть ли другой способ копирования, но я попробовал и получил ту же проблему.

Должно быть, я что-то делаю не так.

Помогите

Что я уже пробовал:

Dim sSourceDir As String = "C:\Source\"
        Dim sTargetDir As String = "C:\Target\"        
Dim sTextList As String() = Directory.GetFiles(sSourceDir, "*.txt")

        'copy text files
        For Each f As String In sTextList
            'Remove path from the file name.
            Dim fName As String = f.Substring(sSourceDir.Length)

            ' 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(sSourceDir, fName), Path.Combine(sTargetDir, fName), True)

            '    'Make sure the file is copied, 10 second delay.
            Threading.Thread.Sleep(10000)
        Next

[no name]

На меня ничего не выскакивает, но я бы заподозрил "f. Substring(sSourceDir.Длина)"

Richard MacCutchan

Вы должны показать некоторую информацию о прогрессе, чтобы вы могли точно видеть, что происходит. Отсюда невозможно догадаться.

Richard Deeming

Заменять f.Substring(...) с Path.GetFileName(f) на всякий случай.

И в этом нет никакой необходимости. Thread.Sleep вызов - File.Copy не возвращается, пока копия не будет завершена.

1 Ответов

Рейтинг:
0

farid.masood

У меня есть функция в C# для копирования файлов из одного каталога в другой.
Может быть, это вам поможет.

public List<string> CopyFiles(string sourceDirectory, string destinationDirectory)
       {
           List<string> CopiedFiles = new List<string>();

           //Get the files from source directory to copy them on new location
           string[] sourceFiles = GetFilesInDirectory(sourceDirectory);


           //Make sure the destination directory exists.
           if (!DirectoryExists(destinationDirectory))
               CreateADirectory(destinationDirectory);



           int ImageCounter = 0;
           while (ImageCounter < sourceFiles.Length)
           {
               FileInfo SourceFile = new System.IO.FileInfo(sourceFiles[ImageCounter]);
               string imagepath = destinationDirectory + "/" + SourceFile.Name;


               //Check for valid extention.
               bool isValidExtnsion = false;
               Array itemValues = System.Enum.GetValues(typeof(ValidImageExtensions));
               int i = 0;
               while (i < itemValues.Length)
               {
                   if (SourceFile.Extension.ToLower() == "." + itemValues.GetValue(i))
                       isValidExtnsion = true;

                   i++;
               }


               //Copy file with valid extensions.
               if (isValidExtnsion)
               {
                   //if (!FileExists(imagepath))
                   {
                       SourceFile.CopyTo(imagepath, true);
                       CopiedFiles.Add(imagepath);
                   }
               }
               ImageCounter++;
           }

           return CopiedFiles;
       }