那么,如何递归搜索文件夹并取消隐藏目录中的所有文件和子文件夹?就像它检查每个文件和每个文件夹...如果他们隐藏..解开他们。我一整个早上都在乱搞,没有运气......我让所有的文件夹恢复正常,但那是关于它的。在C#.Net 2.0中使用文件属性
3
A
回答
0
这样的事情呢?
foreach (var file in directory.GetFiles())
{
if ((File.GetAttributes(file.FullName) & FileAttributes.Hidden) == FileAttributes.Hidden)
{
File.SetAttributes(file.FullName, FileAttributes.Normal);
}
}
4
foreach (var filePath in Directory.GetFiles(@"C:\Temp2"))
{
Console.Write("File " + filePath);
FileAttributes fileAttribute = File.GetAttributes(filePath);
if ((fileAttribute & FileAttributes.Hidden) > 0)
{
Console.WriteLine(" is hidden.");
// unset the hidden flag, but do not change other flags:
File.SetAttributes(filePath, fileAttribute & ~FileAttributes.Hidden);
}
else
{
Console.WriteLine(" is not hidden.");
}
}
做递归,使用
Directory.GetFiles(@"C:\Temp2", "*", SearchOption.AllDirectories)
包括目录也使用GetFileSystemEntries
Directory.GetFileSystemEntries(@"C:\Temp2", "*", SearchOption.AllDirectories)
0
这是很容易使用递归解决。
诸如“隐藏”之类的文件属性被指定为枚举标志,并且最容易使用bit operations来设置或清除。您可以通过获取该路径的FileInfo或DirectoryInfo来查看文件或目录的属性。
// startDir assumed to be full path
public static void UnhideAll(string startDir)
{
DirectoryInfo dir = new DirectoryInfo(startDir);
Console.WriteLine("Working in {0}", startDir);
// First, clear hidden flag on the current directory (if needed)
if ((dir.Attributes & FileAttributes.Hidden) != 0)
{
Console.WriteLine("Clearing hidden flag on dir");
dir.Attributes &= ~FileAttributes.Hidden;
}
else
Console.WriteLine("No need to clear flag since it's already non-hidden");
// Second, recursively go into all sub directories
foreach (var subDir in dir.GetDirectories())
UnhideAll(subDir.FullName);
// Third, fix all hidden files in the current folder
foreach (var file in dir.GetFiles())
{
if ((file.Attributes & FileAttributes.Hidden) != 0)
{
Console.WriteLine("Clearing hidden flag on file {0}", file.FullName);
file.Attributes &= ~FileAttributes.Hidden;
}
else
Console.WriteLine("Skipping {0} since it's not hidden", file.FullName);
}
}
现在,您可以递归调用
UnhideAll(@"C:\SomePath\That\Should\Be\Unhidden");
当然,取消隐藏的目录里面所有隐藏文件,你会想,当您使用此代码删除所有来电Console.WriteLine
但我离开他们有让代码运行时更容易看到发生了什么。这里是一个更加浓缩的版本:
// startDir assumed to be full path
public static void UnhideAll(string startDir)
{
DirectoryInfo dir = new DirectoryInfo(startDir);
// First, clear the current directory
dir.Attributes &= ~FileAttributes.Hidden;
// Second, recursively go into all sub directories
foreach (var subDir in dir.GetDirectories())
UnhideAll(subDir.FullName);
// Third, fix all hidden files in this folder
foreach (var file in dir.GetFiles())
file.Attributes &= ~FileAttributes.Hidden;
}
相关问题
- 1. 在C#.net 2.0中使用WEBDAV,C#
- 2. 如何在.Net 2.0中指定属性
- 3. 在.NET 2.0中使用扩展属性的Escape Catch-22
- 4. .Net 2.0中的TextBox AutoCompleteMode属性
- 5. C#.NET 2.0中
- 6. 在SAML 2.0中使用SAML属性AttributeStatement
- 7. Twitter使用C#和.net 2.0
- 8. 在.NET 2.0中使用Ajax
- 9. 在WPF中使用.NET 2.0(Windows窗体)控件的局限性?
- 10. 在属性的getter中为.Net 2.0调用没有Func
- 11. 在.NET 2.0中使用.NET 3.5类
- 12. 在.Net 2.0中使用.Net 4.0 UserControl
- 13. 在C#中使用linq在xaml文件中搜索属性值?
- 14. 使用c向文件添加属性#
- 15. 在.NET中使用Ambient属性?
- 16. 使用C#和.NET 2.0创建顺序文件夹名称?
- 17. 使用.C在C#(WinForm的.NET)文件
- 18. 有关在运行时在c#(.NET 2.0)中读取类的属性的问题?
- 19. 在C#代码中使用道具/ csproj文件中的属性
- 20. 在JSF 2.0应用程序中使用UTF-8编码属性文件的i18n
- 21. 在Windows中使用Java或C#添加自定义文件属性/属性
- 22. 如何迭代C#类(.NET 2.0)的属性?
- 23. 在JAR中使用属性文件
- 24. 在osgi包中使用属性文件
- 25. 在VS2010中.Net 2.0项目中使用托管C++(.Net 2.0)的问题。引用4.0 .NET功能
- 26. 使用NSMethodSignature在iPhone(所有与obj-C 2.0属性)
- 27. 在C#中,如何判断属性是否为静态? (.Net CF 2.0)
- 28. 如何在.NET 2.0中实现自定义属性?
- 29. 无法在Visual Studio项目属性中选择.NET Framework 2.0的
- 30. 数据绑定到我在.Net 2.0中创建的属性
提供您正在使用的plz代码。 – 2011-05-30 12:20:03
取消/隐藏目录,而不是文件。 – 2011-05-30 16:01:36