setAttributes

Set the attributes of the given file.

For example, a programmatic equivalent of Unix's chmod +x name to make a file executable is name.setAttributes(name.getAttributes | octal!700).

  1. void setAttributes(R name, uint attributes)
    void
    setAttributes
    (
    R
    )
    (,)
  2. void setAttributes(R name, uint attributes)

Parameters

name R

the file name

attributes uint

the attributes to set the file to

Throws

FileException if the given file does not exist.

Examples

setAttributes with a file

import std.exception : assertThrown;
import std.conv : octal;

auto f = deleteme ~ "file";
version (Posix)
{
    scope(exit) f.remove;

    assert(!f.exists);
    assertThrown!FileException(f.setAttributes(octal!777));

    f.write(".");
    auto attributes = f.getAttributes;
    assert(!attributes.attrIsDir);
    assert(attributes.attrIsFile);

    f.setAttributes(octal!777);
    attributes = f.getAttributes;

    assert((attributes & 1023) == octal!777);
}

setAttributes with a directory

import std.exception : assertThrown;
import std.conv : octal;

auto dir = deleteme ~ "dir";
version (Posix)
{
    scope(exit) dir.rmdir;

    assert(!dir.exists);
    assertThrown!FileException(dir.setAttributes(octal!777));

    dir.mkdir;
    auto attributes = dir.getAttributes;
    assert(attributes.attrIsDir);
    assert(!attributes.attrIsFile);

    dir.setAttributes(octal!777);
    attributes = dir.getAttributes;

    assert((attributes & 1023) == octal!777);
}

Meta