0

次のようにファイルを移動するコードを作成しました

            private void Move_Click(object sender, EventArgs e)
    {
        string strOrgpath = string.Empty, strNewpath = string.Empty;
        strOrgpath = tvwACH.SelectedNode.ToString();
        string strPath = strOrgpath.Substring(10);
        FolderBrowserDialog folderborwser1 = new FolderBrowserDialog();

       if (folderborwser1.ShowDialog() == DialogResult.OK)
        {
            try
            {
                strNewpath = folderborwser1.SelectedPath;
                File.Move(strPath, strNewpath);
            }
            catch (Exception ex)
            {

            }
        }

    }

しかし、私が言及したように例外が発生しています。パスへのアクセスが拒否されたため、エラーが発生することがあります。

4

2 に答える 2

1

部分文字列呼び出しが正しい結果を返すことを確認してください。可能であれば、Path代わりにクラスの静的メソッドを使用してください。File.Moveの MSDN ページを見て、期待されるパラメーターに注意してください。有効な完全なファイル名を 2 つ指定する必要があります (例: C:\Blah\myFile.txt)。

ユーザーがフォルダー ブラウザー ダイアログで書き込みアクセス権のないフォルダーを選択すると、"アクセスが拒否されました" というエラー メッセージが表示されることがあります。これは、コードで処理する必要があるシナリオです。おそらくUnauthorizedAccessException.

更新: 宛先ファイルもファイル名を指している必要があります。したがって、次のようにする必要があります。

var origFileName = Path.GetFileName(strPath);
strNewpath = Path.Combine(folderborwser1.SelectedPath, origFileName);
File.Move(strPath, strNewpath);
于 2010-09-20T14:12:22.667 に答える
0

実行時にアプリケーションで使用されている値を確認せずに、有効なファイル システム パスではないtvwACH.SelecteNode.ToString()か推測しています。strOrgpath.Substring(10)

アプリケーションをデバッグし、ブレークポイントを設定して、それらの値が何であるかを確認する必要があります (その時点で問題が何であるかが明らかでない場合は、それらを投稿してください)。

于 2010-09-20T14:11:24.100 に答える