создать файл с помощью FileStream и применить FileAttributes - PullRequest
2 голосов
/ 28 сентября 2011

Возможно ли при создании файла с FileStream также применять FileAttributes одновременно?Я хотел бы создать файл для потоковой записи с атрибутом файла FileAttributes.Teorary.

Ответы [ 4 ]

0 голосов
/ 13 ноября 2017

Вы можете сделать это, если используете метод Win32 CreateFile

uint readAccess = 0x00000001;
uint writeAccess = 0x00000002;

uint readShare = 0x00000001;   

uint createAlways = 2;

uint tempAttribute = 0x100;
uint deleteOnClose = 0x04000000; 

new FileStream(new SafeFileHandle(NativeMethods.CreateFile("filename", 
                                                           readAccess | writeAccess, 
                                                           readShare, 
                                                           IntPtr.Zero, 
                                                           createAlways, 
                                                           tempAttribute | deleteOnClose, 
                                                           IntPtr.Zero), 
                                  true), 
               FileAccess.ReadWrite, 4096, true);


private static class NativeMethods
{
    [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
    internal static extern IntPtr CreateFile(string name, uint accessMode, uint shareMode, IntPtr security, uint createMode, uint flags, IntPtr template);
}

Для получения дополнительной информации см. Документацию MSDN CreateFile

0 голосов
/ 28 сентября 2011

Вы можете использовать FileOptions.DeleteOnClose в качестве одного из параметров. Файл будет автоматически удален после того, как вы закончите свою работу и удалите поток.

0 голосов
/ 28 сентября 2011

Зачем вам все это делать одновременно?

  1. Просто создайте файл (используя File.Create или, если это временный файл, используйте GetTempFileName .)
  2. Установить атрибуты во вновь созданном файле
  3. Откройте файл любым удобным для вас способом
0 голосов
/ 28 сентября 2011

Да, конечно, вы можете применять FileAttributes также, используя File.SetAttributes Метод

...