2016-05-17 8 views
0

フォルダをwinFormアプリケーションに読み込もうとしています。アプリケーションは、フォルダ内のファイルを読み取り、そのファイルに対して何らかの操作を実行する必要があります。次の実装です:パス 'C: Users mehdi Desktop sample Test'へのアクセスが拒否されました

private void button1_Click(object sender, EventArgs e) 
    { 
     FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog(); 
     DialogResult result = folderBrowserDialog.ShowDialog(); 

     var files = from file in Directory.EnumerateFiles(folderBrowserDialog.SelectedPath, "*.chunk*", SearchOption.AllDirectories) 
        from line in File.ReadLines(file) 
        select new 
        { 
         File = file, 
         Line = line 
        }; 
     string newPath = folderBrowserDialog.SelectedPath; 
     if (!Directory.Exists(newPath)) 
     { 
      System.IO.Directory.CreateDirectory(newPath + @"\Test"); 
     } 

     foreach (var f in files) 
     { 

      string path = f.File.ToString(); 
      string filename = Path.GetFileName(path); 
      string s = string.Empty; 
      using (StreamReader reader = new StreamReader(path, true)) 
      { 
       s = reader.ReadToEnd(); 
       reader.Close(); 
      } 

      string[] parts = s.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 

      using (File.CreateText(Path.Combine(newPath + @"\Test", filename+".txt"))) 
      { } 
      using (StreamWriter sw = File.CreateText(Path.Combine(newPath + @"\Test", filename + ".txt"))) 
      { 
       string output = string.Empty; 
       foreach (string st in parts) 
       { 
        output += st + ","; 
       } 
       sw.Write(output); 
      } 
     } 
    } 

ラインusing (File.CreateText(newPath))上の誤差は言ってあります:

を型 'System.UnauthorizedAccessException' の未処理の例外が

がmscorlib.dllで発生しました追加情報:アクセス'C:\ Users \ mehdi \ Desktop \ sample \ Test'へのパスは拒否されます。

私がしようとしているのは、フォルダを読み込んで各テキストファイルを読み込んで、指定されたタスクを実行する必要があります(ワード間の空白をコンマで置き換えます)新しいフォルダにSystem.IO.Directory.CreateDirectory(newPath);として作成します。すべて期待どおりに動作していますが、操作が新しく作成されたフォルダTestにファイルを書き込むことに達すると、そのアクセスが許可されていません。

私は間違っていますか?

+0

確認する:エクスプローラにパスをコピーすると、フォルダは問題やプロンプトが表示されずに開き、アプリケーションが実行され、管理者の資格情報が正しく表示されますか? –

+0

@ManfredRadlwimmer。フォルダは通常のエクスプローラで開きます。アプリケーションは管理者の資格情報で実行されています。ありがとう – Jogi

+0

@ManfredRadlwimmer私は私の質問を編集しました。もう一度行ってください。ありがとう – Jogi

答えて

2

newPathのディレクトリパスを使用してファイルを作成しています。 newPathにファイル名を追加してファイルを作成します。

File.CreateText(Path.Combine(newPath, "<yourfileName>.extension")) 
+0

答えをありがとう。あなたは上記のコードから 'ファイル名'を抽出するのを助けてくれますか? – Jogi

+0

選択したディレクトリのファイル名を意味しますか? 'string path = f.File.ToString(); 'をチェックしてください。同じです。 – vendettamit

+0

完了しました。実行はそのコード行を過ぎてしまいました。しかし、我々は、 ''追加情報: 'C:\ Users \ mehdi \ Desktop \ sample \'のパスの一部を見つけることができませんでした」という行で 'using(StreamWriter sw = File.CreateText(newPath))'にスローされました。 ' – Jogi

関連する問題