[ad_1]
やあみんな、
EVERYONE パーミッションでフォルダーを剪断し、読み取りと書き込みのパーミッションを付与し、以下のコードを使用してその中に新しいフォルダーを作成しようとしましたが、エラーが発生し、プロジェクト ファイル内のドキュメント/アプリデータにフォルダーが作成されました。問題を解決します。 ありがとう
私が試したこと:
string targetPath = “\\\\MANAGER\\Archive Documents\\” + txtgetID.Text + ” ” + txtNumberB.Text + ” ” + txtDateB.Text;
if (!Directory.Exists(“\\\\MANAGER\\Archive Documents\\” + Directory.CreateDirectory(“\\\\MANAGER\\Archive Documents\\” + txtgetID.Text + ” ” + txtNumberB.テキスト + ” ” + txtDateB.Text)))
{
Directory.CreateDirectory(“\\\\MANAGER\\Archive Documents\\” + Directory.CreateDirectory(“\\\\MANAGER\\Archive Documents\\” + txtgetID.Text + ” ” + txtNumberB.Text + ” ” + txtDateB.Text));
}
それ以外
{
foreach (新しい DirectoryInfo(sourcePath).GetFiles(fileName) 内の var ファイル)
{
file.MoveTo(Path.Combine(targetPath, file.Name));
}
}
解決策 1
まず、ディレクトリ名を何度も生成するのをやめて、最初に使用した 1 つの文字列を使用します。
次に、問題が何であるかがより明確になります。
if (!Directory.Exists("\\\\MANAGER\\Archive Documents\\" + Directory.CreateDirectory("\\\\MANAGER\\Archive Documents\\" + txtgetID.Text + " " + txtNumberB.Text + " " + txtDateB.Text)))
チェックしている監督名について考えてください。
Directory.CreateDirectory メソッド (System.IO) | マイクロソフト ラーン[^] DirectoryInfo 構造体を返し、暗黙的な ToString 実装はフォルダーの完全なパスを返します。これは、チェックしているフォルダーに 2 つのルート要素があることを意味します。
"\\\\MANAGER\\..." + "\\\\MANAGER\\..."
そのコードを破棄して、最初からやり直すべきだと思います…
解決策 2
これは一体何ですか?
if(!Directory.Exists("\\\\MANAGER\\Archive Documents\\" + Directory.CreateDirectory("\\\\MANAGER\\Archive Documents\\" + txtgetID.Text + " " + txtNumberB.Text + " " + txtDateB.Text)))
Directory.Exists() は true/false 値を返しますが、これを .Text 文字列に追加しても意味がありません。 Directory.CreateDirectory は文字列を返しませんが、DirectoryInfo オブジェクトを返します。 では、if ステートメントで評価可能な結果は言うまでもなく、 true + .Text + DirectoryInfo はどのように意味をなすのでしょうか?
また、文字列連結を使用すると、コードのデバッグが非常に難しくなります。 代わりに補間を試してください。
そして、あなたのelse句は意味がありません。 ディレクトリが存在しない場合は、それを「作成」しますが、その後は何もしません。 コードが if ステートメントに到達するまでにディレクトリが存在しない限り、else 句は実行されません。
string targetPath = $@"\\MANAGER\Archive Documents\{txtgetID.Text} {txtNumberB.Text} {txtDateB.Text}"; if (!Directory.Exists(targetPath)) { Directory.Create(targetPath); } foreach (var file in new DirectoryInfo(sourcePath).GetFiles(fileName)) { string targetFilepath = Path.Combine(targetPath, file.Name); file.MoveTo(targetFilepath); }
[ad_2]
コメント