运行 进入错误 "Access to the path 'C:\Users\Work & School\Documents\My Music' is denied." C#-App 控制台
Running into error "Access to the path 'C:\Users\Work & School\Documents\My Music' is denied." C#-App console
我正在学习微软的教程“https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-enumerate-directories-and-files”
具体来说,这个:
using System;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
try
{
// Set a variable to the My Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Console.WriteLine($"{f.File}\t{f.Line}");
}
Console.WriteLine($"{files.Count().ToString()} files found.");
}
catch (UnauthorizedAccessException uAEx)
{
Console.WriteLine(uAEx.Message);
}
catch (PathTooLongException pathEx)
{
Console.WriteLine(pathEx.Message);
}
}
}
但是,当我运行这个文件时,我运行进入错误:
访问路径 'C:\Users\Work & School\Documents\My Music' 被拒绝。
我想知道,为什么它首先要访问“我的音乐”文件夹,而它应该做的只是访问“文档”?此外,我还尝试从单独的文件夹中删除 Music 文件夹,但我仍然遇到同样的错误。我还在文档文件夹中放置了两个文本文件,都指定了 "Microsoft",因此它们将 return 来自行的值。我该如何消除错误?
*对于文本文件,我也关闭了只读属性
为什么首先访问“我的音乐”文件夹?
Because of your SearchOption
. SeachOption.AllDirectories
searches file in current directory as well as all its subdirectories.
如果您只想在当前目录中搜索而不是在其子目录中搜索,请将 SearchOption
更改为 SeachOption.TopDirectoryOnly
您更新后的代码应该如下所示,
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.TopDirectoryOnly)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
我正在学习微软的教程“https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-enumerate-directories-and-files”
具体来说,这个:
using System;
using System.IO;
using System.Linq;
class Program
{
static void Main(string[] args)
{
try
{
// Set a variable to the My Documents path.
string docPath =
Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.AllDirectories)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};
foreach (var f in files)
{
Console.WriteLine($"{f.File}\t{f.Line}");
}
Console.WriteLine($"{files.Count().ToString()} files found.");
}
catch (UnauthorizedAccessException uAEx)
{
Console.WriteLine(uAEx.Message);
}
catch (PathTooLongException pathEx)
{
Console.WriteLine(pathEx.Message);
}
}
}
但是,当我运行这个文件时,我运行进入错误:
访问路径 'C:\Users\Work & School\Documents\My Music' 被拒绝。
我想知道,为什么它首先要访问“我的音乐”文件夹,而它应该做的只是访问“文档”?此外,我还尝试从单独的文件夹中删除 Music 文件夹,但我仍然遇到同样的错误。我还在文档文件夹中放置了两个文本文件,都指定了 "Microsoft",因此它们将 return 来自行的值。我该如何消除错误?
*对于文本文件,我也关闭了只读属性
为什么首先访问“我的音乐”文件夹?
Because of your
SearchOption
.SeachOption.AllDirectories
searches file in current directory as well as all its subdirectories.
如果您只想在当前目录中搜索而不是在其子目录中搜索,请将 SearchOption
更改为 SeachOption.TopDirectoryOnly
您更新后的代码应该如下所示,
var files = from file in Directory.EnumerateFiles(docPath, "*.txt", SearchOption.TopDirectoryOnly)
from line in File.ReadLines(file)
where line.Contains("Microsoft")
select new
{
File = file,
Line = line
};