2017-08-31 10 views
1

私は珍しい問題があります。私の問題は、私もファイル名を含むファイルパスのコレクションを持っているということです。コードがコレクションの周りをループするとき、文字列を受け取り、FileInfoオブジェクトを作成します。このオブジェクトでは、MoveToメソッドを使用してファイルを別の場所に移動します。FileInfoが指定したファイルの例外を見つけることができません

これは、長さがゼロのファイルに到達してファイルが見つからないと言います。このファイルを取得して別のアプリケーションでFileInfoオブジェクトを作成すると、サイズに関係なく動作します。誰もがこれを引き起こしているとそれを解決する方法について知っていますか?あなたは

 System.IO.File.Move(Sourcefile, DestinationFile); 

詳細を使用する必要が

IList<string> files = new List<string >(); 
files.add(file1); 
files.add(file2); 

foreach (string filepath in files) 
{ 
    FileInfo file = new FileInfo (filepath); 
    string newlocation = Path.Combine(dest, file.name); 

    file.MoveTo (newlocation); //exception thrown here on zero length 
} 
+1

のFileInfo非存在しないパスに対して例外をスローします。既存のファイルに依存するアクションを実行する前に、まず 'Exists'を使用する必要があります。 – Nkosi

+0

ポイントがありません。存在は存在しますが、それはそうではないと言います。私のメモを読んだ場合、ファイルを移動するかどうかを確認するテストを書いたと言いました。存在はこれのポイントではありません。問題はなぜこれを行うのですか – Andy5

+0

'File.Move'を使用すると同じことが起こります。 – Nkosi

答えて

1

file.MoveTo(...)file.Refresh()を呼び出すようにしてください。文句を言わないこのページで

読む備考https://msdn.microsoft.com/en-us/library/system.io.fileinfo.exists.aspx

+0

私は以前これを気付きました。私は新しいfileinfoオブジェクトを作成してmovetoを呼び出す間にこれを試しましたが、これは違いはありませんでした – Andy5

関連する問題