2008-09-18 2 views
33

Есть ли способ, с помощью которого я могу программно создавать (и, я предполагаю, доступ) скрытые папки на устройстве хранения данных изнутри C#?Создание скрытых папок

+1

retagged, так как это не C# языка конкретный вопрос – 2008-09-18 14:35:20

ответ

84
using System.IO; 

string path = @"c:\folders\newfolder"; // or whatever 
if (!Directory.Exists(path)) 
{ 
DirectoryInfo di = Directory.CreateDirectory(path); 
di.Attributes = FileAttributes.Directory | FileAttributes.Hidden; 
} 
+8

первый результат на Google – 2008-09-18 13:12:31

+7

Теперь вы первый результат на Google. – KDecker 2015-08-25 19:11:26

24

Да, вы можете. Создайте каталог как обычно, а затем просто установите атрибуты на нем. Например.

DirectoryInfo di = new DirectoryInfo(@"C:\SomeDirectory"); 

//See if directory has hidden flag, if not, make hidden 
if ((di.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden) 
{ 
    //Add Hidden flag  
    di.Attributes |= FileAttributes.Hidden;  
} 
+0

Если предложение можно свести к `if (! Di.Attributes.HasFlag (FileAttributes.Hidden))` – schoetbi 2017-04-05 12:24:52

4
string path = @"c:\folders\newfolder"; // or whatever 
if (!System.IO.Directory.Exists(path)) 
{ 
    DirectoryInfo di = Directory.CreateDirectory(path); 
    di.Attributes = FileAttributes.Directory | FileAttributes.Hidden; 
} 

От here.

6
CreateHiddenFolder(string name) 
{ 
    DirectoryInfo di = new DirectoryInfo(name); 
    di.Create(); 
    di.Attributes |= FileAttributes.Hidden; 
} 
-2

Код, чтобы получить только путь к корневым папкам.

Как Если мы имеем C:/Test/ C:/Test/Abc C:/Test/хуг C:/Test2/ C:/test2/MNP

Это будет возвращать корневые папки пути т.е. C:/Test/ C:/Test2/

  int index = 0; 
      while (index < lst.Count) 
      { 
       My obj = lst[index]; 
       lst.RemoveAll(a => a.Path.StartsWith(obj.Path)); 
       lst.Insert(index, obj); 
       index++;      
      }