0

もう一度あなたの助けが必要です:)

public partial class Form1 : Form
{
    const string v_datoteko = @"\\Cartman-pc\k\test"; // prenese v katero koli mapo le, da imaš dovoljenje!
    const string iz_datoteke = @".\posnetki07"; // mora biti v isti mapi kot .exe!( primer: posnetki s v c:\  program mora biti v c:\ ne v mapi. !
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        DirectoryInfo dir = new DirectoryInfo(iz_datoteke);
        if (!dir.Exists)
        {
            throw new Exception("Mapa ne obstaja: " + iz_datoteke);
        }
        if (!Directory.Exists(v_datoteko))
        {
            Directory.CreateDirectory(v_datoteko);

        }
        FileInfo[] files = dir.GetFiles();
        foreach (FileInfo file in files)
        {

            string temppath = Path.Combine(v_datoteko, file.Name);
            file.CopyTo(temppath);
        }

    }

ファイルをコピーするまで、プログラムは正常に動作します。ファイルは既にフォルダーにあり、エラーが発生します。だから私は何かをする必要があることを知っています

//if ( File.Exists( path ) ) 
     File.Move( path, path + ".old" );  

しかし、私はC#が初めてで、どこに置くべきかわかりません。:)あなたの助けをありがとう

4

4 に答える 4

1

あなただけがする必要があります

file.CopyTo(temppath, false);

上書きするかどうかの 2 番目のパラメーター。ファイルが存在しない場合にのみコピーする必要があるため、false として指定できます。

上書きする必要がある場合は、true に設定します。

FileInfo.CopyTo メソッド (文字列、ブール値)


ファイルが存在する場合に新しい名前でファイルをコピーする必要がある場合

temppath = File.Exists(temppath)? temppath+ ".old":temppath;

File.CopyTo(temppath);
于 2013-09-19T07:53:19.507 に答える
0
foreach (FileInfo file in files)
{
    string temppath = Path.Combine(v_datoteko, file.Name);
    if(File.Exists(temppath))
        file.CopyTo(Path.Combine(v_datoteko, file.Name + ".old");
    else                
        file.CopyTo(temppath);
}
于 2013-09-19T07:52:10.500 に答える
0

周りfile.CopyTo(temppath);

if (!temppath.exists){
  file.CopyTo(temppath);
}

また、エラーをキャッチし、最後に、コピーされなかったファイルに言及するエラーリストを生成することもできます:)

于 2013-09-19T07:52:35.553 に答える