2017-05-23 13 views
0

私はGUIアプリケーション(VB.NET)を持っています。ユーザーはあらかじめ定義されたディレクトリにあるファイルを検索し、あらかじめ定義された場所にコピーします。ユーザーが検索するファイルごとに、名前は同じだがファイルサイズが異なる2つのファイルがあります。これが当てはまる時間の80%、利用できるファイルは1つだけ20%です。ファイルのコピー。 2つのファイルの名前がほぼ同じで、大きなファイルをコピーしたい

たとえば、「12345-A」と「12345-B」という2つのファイルがあります。私が望むのは、ユーザーが "12345"のみを使用して検索し、アプリケーションがAとBを比較してより大きなサイズをコピーし、AまたはBだけが利用可能なものをコピーする場合です。 A & Bは定数ではありません。任意の文字を使用できます。

私はどのように起動すべきかはわかりませんが、GUI名をテキストボックス(検索用)とtextBox(新しい名前)とStart Copyボタンを使って入力するだけです。私は使用しています:

My.Computer.FileSystem.CopyFile( 
    string to copy, 
    destination, 
    FileIO.UIOption.OnlyErrorDialogs, 
    FileIO.UICancelOption.DoNothing 
) 

アイデア?

+0

"12345"が含まれているファイルを検索するなど、ファイルを検索してサイズの大きいファイルをコピーできますか? 2つ以上のファイルエラーメッセージ(検索が有効でない)がある場合、一致するファイルが1つあれば、そのファイルをコピーします。 –

+1

DirectoryInfo.GetFiles(パターン)を使用してFileInfoの配列をサイズ順に並べ替えてください。 – Steve

+0

こんにちはスティーブ、素早く答えてくれてありがとうございます。より多くの "FileInfoの結果の配列は、サイズのためにそれを最初に取る"? –

答えて

0

クラスDirectoryInfoを使用すると、指定したパターンに一致するソースフォルダ内のファイルを取得できます。得られたFileInfoの配列は、の長さプロパティで降順に並べ替えることができ、最後に最初のものをコピーのソースファイルとして使用できます。

Dim di = new DirectoryInfo("your_source_directory_with_files") 
Dim sourceFile = di.GetFiles("12345*.*"). 
        OrderByDescending(Function(x) x.Length). 
        FirstOrDefault() 

if sourceFile IsNot Nothing Then 
    Dim destFile = Path.Combine("your_destination_directory", sourceFile.Name) 
    My.Computer.FileSystem.CopyFile(sourceFile.FullName, destFile, 
        FileIO.UIOption.OnlyErrorDialogs, 
        FileIO.UICancelOption.DoNothing) 
End If 
+0

私が正しく理解していれば、私はsourcefileを定義するとvarを使うことができません。 "エラーは宣言されていません"したがって、私はDimを使ってコピーしようとしました。コピーする。任意のアイデア@steve? –

+0

はい、申し訳ありませんが、私のエラー。今すぐOK – Steve

+1

訂正していただきありがとうございます。私は実際に何か短いものを見つけました。私はIF ...などをすべて取り除き、Sourcefile.CopyTo( "My destination")に置き換えました。 –

関連する問題