OKみんな、私はC#認証が必要なファイルを避けるにはどうすればよいですか?
(それは(6つのフォルダとさらにいくつかのファイル)小さい紀元前だけで、テストのためにそれを作った)私はそのA鉱山の場合には、特定のドライブに行かなければならない次の問題を得ましたそのドライブ上
、私はすべてのフォルダとサブフォルダとファイルのリストを取得し、XMLファイルにそれを記述する必要があります....
今私はほぼ完了しています...
私が持っていますDirectoryInfo内のすべてのフォルダとファイル
ファイルをforeachループで調べると、OSからの許可が必要な魔法使いになって例外がスローされ、プログラムが失敗します...
私はその例外を処理する必要がありますそのファイルをスキップして、次のページに進みます...
私を助けますか?
ここでは、コードです:
private static XElement GetDirectoryXml(DirectoryInfo dir)
{
var info = new XElement("dir", new XAttribute("name", dir.Name));
foreach (var file in dir.GetFiles()) //here is the exception
{
info.Add(new XElement("file", new XAttribute("name", file.Name)));
}
foreach (var subDir in dir.GetDirectories())
{
info.Add(GetDirectoryXml(subDir));
}
return info;
}
例外はこれです:パスへのアクセス「:型「System.UnauthorizedAccessException」の未処理の例外がmscorlib.dllで
発生しました追加情報\ Config.Msi 'は拒否されました。
は、私は、try catchブロックforeach (var file in dir.GetFiles())
{
try
{
info.Add(new XElement("file", new XAttribute("name", file.Name)));
}
catch (Exception e)
{
continue;
}
finally
{ }
}
を試してみましたが、それがところでここ
iはMSのVisual Studio 2013
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security;
using System.Security.Permissions;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
var doc = new XDocument();
var driver = new DriveInfo(@"A:\");
foreach (var dir in driver.RootDirectory.GetDirectories())
{
doc = new XDocument(GetDirectoryXml(dir));
}
Console.WriteLine(doc.ToString());
Console.Read();
}
private static XElement GetDirectoryXml(DirectoryInfo dir)
{
var info = new XElement("dir", new XAttribute("name", dir.Name));
foreach (var file in dir.GetFiles())
{
try
{
info.Add(new XElement("file", new XAttribute("name",
file.Name)));
}
catch (Exception e)
{
continue;
}
finally
{ }
}
foreach (var subDir in dir.GetDirectories())
{
info.Add(GetDirectoryXml(subDir));
}
return info;
}
}
}
ので....あなたが適切な言葉は「例外を扱う」知っているようです。 C#で例外を処理する方法を調べるためにWeb検索を試しましたか? – mason
私はこれを試しました:try { foreach(dir.GetFiles()内のvarファイル { info.Add(new XElement( "file"、new XAttribute( "name"、file.Name)))); } } キャッチ(例外e) { } ついに {}しかし、それはあなたはそれがなかった場合、あなたはそれを望んでいたかどうか何も言わなかった、あなたが何かをしようとしたと述べた – bro1
仕事didntの。 – mason