什么是设置语法多个文件的扩展为searchPattern上Directory.GetFiles()?例如,使用.aspx和.ascx扩展名过滤掉文件.
// TODO: Set the string 'searchPattern' to only get files with
// the extension '.aspx' and '.ascx'.
var filteredFiles = Directory.GetFiles(path, searchPattern);
Run Code Online (Sandbox Code Playgroud)
更新:LINQ不是一个选项,它必须是一个searchPattern传入GetFiles,如问题中所指定的.
我需要一个简单的函数,它将FileInfo和destination_directory_name作为输入,从fileinfo获取文件路径,并在作为第二个参数传递的destination_directory_name中复制它.
对于前 filepath是"d:\ recordings\location1\client1\job1\file1.ext该函数应该在destination_directory_name中创建目录(如果它们不存在)并在创建目录后复制该文件.
我正在尝试创建一个远程目录,然后将文件写入其中.每隔一段时间,在尝试编写文件时,应用程序会因System.IO.DirectoryNotFoundException而失败.
当我编写文件时,我正在使用返回的DirectoryInfo对象来帮助创建文件路径,因此应用程序似乎认为该目录已经创建.但是,该目录不存在.
在Windows完成创建之前,我是否有可能尝试写入目录?我认为Directory.CreateDirectory在此任务完成之前不会返回.
我正在写一个更新一些驱动程序的应用程序.但是,驱动程序"正在使用",除非重新启动计算机,否则无法删除.
那么如何在不重新启动PC的情况下编写应用程序来删除这些锁定的驱动程序.如果重新启动必须重新启动,那么当计算机重新启动并删除这些文件时,如何自动重新启动应用程序?
我在C#程序中使用
System.IO.Directory.GetFiles(dirname, "*.*", System.IO.SearchOption.AllDirectories).Length;
计数到共享上的目录(及其子目录)中的文件数.我为循环中的许多目录执行此操作.现在的问题是,在20-30次GetFiles(...).Length我的程序调用后突然冻结或变得非常慢.可能是什么原因以及如何解决这个问题!有变通方法吗?
我最近碰到了微软的一个奇怪的功能:
假设我们的文件夹c:\tmp123包含3个文件 -
1.txt
2.txtx
3.txtxt
a)Directory.GetFiles(@"C:\tmp123", "*.txt")在3个退货项目中调用收益率.
b)Directory.GetFiles(@"C:\tmp123", "*.txtx")在1个退回的项目中调用收益率.
据微软称,这是预期的行为(参见MSDN中的注释).
我的问题是:
为什么微软决定拥有这样一个奇怪的功能?
我怎样才能克服这个问题?
即我怎么有一个搜索模式,将返回*.txt唯一的扩展,而不是返回*.txtx,*.txtstarngefunctionality等?
我已经阅读了关于Directory.EnumerateFiles和之间差异的讨论Directory.GetFiles。
我知道他们在内部都使用
System.IO.FileSystemEnumerableFactory.CreateFileNameIterator()
不同之处在于EnumerateFiles可能会使用延迟执行(lazy),而会使用GetFiles()a ToArray,因此该函数已经被执行了。
但是如果在迭代过程中将文件和文件夹添加到字典中会发生什么。迭代是否只迭代在EnumerateFiles()?期间存在的项目?
更糟糕的是:如果在迭代过程中删除文件会发生什么:它们还会被迭代吗?
我试图在"c:\ Users"中迭代窗口中的用户文件夹列表但排除了microsoft内置用户文件夹,下面是我用来完成此专长的代码段但是由于某种原因不按预期工作.
private readonly List<String> _exclusion = new List<String>
{
"All Users",
"Default",
"LocalService",
"Public",
"Administrator",
"Default User",
"NetworkService"
};
public static bool FoundInArray(List<string> arr, string target)
{
return arr.Exists(p => p.Trim() == target);
}
foreach (string d in Directory.GetDirectories(sDir).Where(d => !FoundInArray(_exclusion,d)))
{
richTextBox1.Text += d + Environment.Newline;
}
Run Code Online (Sandbox Code Playgroud)
我不确定为什么这不起作用,有人可以为我提供一些见解吗?
有没有一种简短的方法可以从当前路径获取某些父目录路径。
我有这样一条路:
"c:\\users\\userName\\documents\\visual studio 2013\\Projects\\SolutionName\\ProjectName\\bin\\Debug"
Run Code Online (Sandbox Code Playgroud)
我想获取路径到“ SolutionName”目录,像这样
"c:\\users\\userName\\documents\\visual studio 2013\\Projects\\SolutionName"
Run Code Online (Sandbox Code Playgroud)
我需要它,因为我将一些数据存储在文件夹中
"c:\\users\\userName\\documents\\visual studio 2013\\Projects\\SolutionName\\DataFolder"
Run Code Online (Sandbox Code Playgroud)
我需要从解决方案中的不同项目中访问它。
谢谢大家,我做了什么
public static string GetParent( string parentName,string FileName)
{
var dir = new DirectoryInfo(System.IO.Directory.GetCurrentDirectory());
while (dir.Parent.Name != parentName)
{
dir = dir.Parent;
}
return dir.Parent.FullName+"\\Data\\"+FileName;
}
Run Code Online (Sandbox Code Playgroud)
我接受了卡勒姆·布拉德伯里(Callum Bradbury)的回答,因为我只是将其更改为不递归。
为什么我不能创建一个class在VB.NET那inherits System.IO.Directory?根据Lutz Roeder的说法,它并没有被宣布为NotInheritable!
我想创建一个utility class添加功能Directory class.例如,我想添加一个Directory.Move功能.
请指教,我会寄给你六包.好的,没关系,我没有送你任何东西,但如果你今晚来到酒吧,我会把你搞定,然后在游泳池里打败你.
c# ×8
.net ×6
getfiles ×2
delete-file ×1
directory ×1
enumerate ×1
file ×1
file-io ×1
filesystems ×1
inheritance ×1
performance ×1
vb.net ×1
windows ×1