2016-06-17 27 views
2

現在、フォルダ構造をディレクトリにコピーするプログラムを作成しようとしています。私はソース・フォルダのList<FileSystemInfoを持っているし、今私は、ファイルをコピーして、例のようにフォルダを作成する必要が
C:\test1\folder\folder\file.txtC:\test2\folder\folder\file.txtファイルを別のフォルダ構造にコピー

で終わる必要があります。ここでは

は一例です。

260文字のファイル名制限のため、パス名文字列なしでこれを実行したいと思います。

私はパス名でファイルをコピーするには、このコードを持っている:

string destFile = BackupOptions.DestinationFolder + sourceFileInfo.FullName; 
string destParent = Directory.GetParent(destFile).FullName; 
string backupFolder = destParent + @ "\backupFolder"; 
try { 
while (!Directory.Exists(destParent)) { 
    if (!Directory.Exists(destParent)) { 
    Directory.CreateDirectory(destParent); 
    } 
} 
FileAttributes fileAttributes = sourceFileInfo.Attributes; 
if ((fileAttributes & FileAttributes.Directory) == FileAttributes.Directory) { 
    Directory.CreateDirectory(destFile); 
} else { 
    FileInfo file = (FileInfo) sourceFileInfo; 
    file.CopyTo(destFile, true); 
} 
} catch (Exception e) { 
Console.Write(e.Message); 
return false; 
} 

誰かがそのファイル/オブジェクトのFileSystemInfo-オブジェクトでファイル/ディレクトリをコピーする方法を知っていますか?

答えて

1

.NET IOクラスのいずれも、今は長いパスをサポートしていないと思います。私が知っていることのまわりではない。 .NET 4.0のタイムフレームでは、チームはそれを追加しようとしましたが、決して上陸しませんでした。

これを追加するライブラリを検索エンジンで検索します。ライブラリはPInvokeを内部的に使用しています(もちろん、あまり便利ではありません)。私はAlphaFSが知られている名前だと思う。

コードを簡略化することができます。Directory.CreateDirectoryは、複数のレベルを同時に作成し、ディレクトリがすでに存在する場合には失敗しません。これはほとんど常に必要なものです。

、オブジェクトの親フォルダの文字列でそれを使用すると、あなたは何を意味するか

ない100%必ず先のフォルダにディレクトリを作成しますが、それはうまく右のかもしれない:)

関連する問題