2017-08-23 3 views
1

私はWindows 10を使用していますが、の2つのフォルダ、つまりの出力先があります。 DestinationフォルダはDropbox内にあります。私は2つの方法を持っていますCopySourceFilesToDestinationSynchronizeSourceAndDestinationです。 Fistメソッドはすべてのフォルダとファイルをソースからコピー先にコピーし、2番目の方法は特定のファイル名がSourceフォルダに存在するかどうかをチェックし、ソース内のファイル名が見つからない場合はDestinationフォルダから特定のファイルを削除します。今私は以下のような名前のファイルがほとんどなく、ファイルの内容を気にする必要はありません。Dropboxフォルダにコピーされたファイルが元のファイル名と異なる処理をしています

E:\ Source \ A0000000001 \ 20162356312-未来のユートピアの未来。ヘイデン ホワイト。 Historein 7.pdf

E:\ Source \ T0000000142 \ 20162350775-ÉtienneGeoffroy Saint-Hilaire、 1772-1844先見的な自然主義者。 HervéLe Guyader.pdf

E:\ Source \ T0000000403 \ 2016242657 - 孤立歩行者の反響; 植物学;フランキエールへの手紙。ジャン・ジャック・ Rousseau.pdf

E:\ソース\ T0000000428上Literature-エッセイの2016243154-科学\ 計り知れないdifference.Helmutミュラー・Sievers.pdf

私は私のプログラムがファイルをコピーするを実行しますDestinationではなく、私のSynchronizeSourceAndDestinationメソッドは、UTF-8文字を含まないリストの最初のファイルを期待するすべてのファイルを削除します。二回目で

using System; 
using System.IO; 

namespace DropboxDemo 
{ 
    class Program 
    { 
     private static string lookupDirectory = @"E:\Source"; 
     private static string backupDirectory = @"C:\Users\SIMANT\Dropbox \Destination"; 
     static void Main(string[] args) 
     { 
      Console.WriteLine("Please wait while copying files."); 
      CopySourceFilesToDestination(lookupDirectory); 

      Console.WriteLine("Please wait while synchronizing files."); 
      SynchronizeSourceAndDestination(backupDirectory); 

      Console.ReadLine(); 
     } 

     public static void SynchronizeSourceAndDestination(string dir) 
     { 
      foreach (string file in Directory.GetFiles(dir)) 
      { 
       string destFilePath = file.Replace(backupDirectory, lookupDirectory); 

       if (!File.Exists(destFilePath)) 
       { 
        // Delete file from Backup 
        File.Delete(file); 
       } 
      } 

      foreach (string directory in Directory.GetDirectories(dir)) 
      { 
       string destinationDirectory = directory.Replace(backupDirectory, lookupDirectory); 

       if (!Directory.Exists(destinationDirectory)) 
       { 
        Directory.Delete(directory, true); 
        continue; 
       } 
       SynchronizeSourceAndDestination(directory); 
      } 
     } 
     public static void CopySourceFilesToDestination(string dir) 
     { 
      foreach (string file in Directory.GetFiles(dir)) 
      { 
       string destFilePath = file.Replace(lookupDirectory, backupDirectory); 

       if (!File.Exists(destFilePath)) 
       { 
        File.Copy(file, destFilePath); 
       } 
       else 
       { 
        // Override the existing file       
        File.Copy(file, destFilePath, true); 
       } 
      } 

      foreach (string directory in Directory.GetDirectories(dir)) 
      { 
       //Create directory if not present in the destination 
       string destinationDirectory = directory.Replace(lookupDirectory, backupDirectory); 
       if (!Directory.Exists(destinationDirectory)) 
       { 
        Directory.CreateDirectory(destinationDirectory); 
       } 
       CopySourceFilesToDestination(directory); 
      } 
     } 
    } 
} 

、私はソースフォルダに(Dropboxの内部にある)送信先からすべてのファイルをコピーし、プログラムを再実行し、今ではファイルを削除しません。なぜこのような行動を取っていますか?私はファイルがDropboxにコピーされるとき、それは同じファイル名(私たちが目から見るもの)を別のやり方で表していると思います。この問題を克服するのを手伝ってください。

答えて

0

私の解決策を実行可能にするために、私は(Altキー+ 130)éÉ(Altキー+ 144)を押すことで拡張ASCII文字を変更しました。ファイル作成者が文字のコピーと貼り付けを直接行ったからだと思います。

関連する問題