/*- * Copyright (C) 2008 Erik Larsson * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package org.catacombae.storage.fs; /** * @author Erik Larsson */ public class WindowsFileAttributes { private static final int FILE_ATTRIBUTE_READONLY = 0x1; private static final int FILE_ATTRIBUTE_HIDDEN = 0x2; private static final int FILE_ATTRIBUTE_SYSTEM = 0x4; private static final int FILE_ATTRIBUTE_DIRECTORY = 0x10; private static final int FILE_ATTRIBUTE_ARCHIVE = 0x20; private static final int FILE_ATTRIBUTE_NORMAL = 0x80; private static final int FILE_ATTRIBUTE_TEMPORARY = 0x100; private static final int FILE_ATTRIBUTE_SPARSE_FILE = 0x200; private static final int FILE_ATTRIBUTE_REPARSE_POINT = 0x400; private static final int FILE_ATTRIBUTE_COMPRESSED = 0x800; private static final int FILE_ATTRIBUTE_ENCRYPTED = 0x4000; private static final int FILE_ATTRIBUTE_OFFLINE = 0x1000; private static final int FILE_ATTRIBUTE_VIRTUAL = 0x10000; private final int attributeDword; /** * Creates a new WindowsFileAttributes from a 32 bit integer holding the * flags as specified in the dwFileAttributes member of * struct BY_HANDLE_FILE_INFORMATION (see * * MSDN). * * @param iAttributeDword */ public WindowsFileAttributes(int iAttributeDword) { attributeDword = iAttributeDword; } /** * The file or directory is read-only. Applications can read the file, * but cannot write to it or delete it. If it is a directory, * applications cannot delete it. */ public boolean isReadOnly() { return (attributeDword & FILE_ATTRIBUTE_READONLY) != 0; } /** * The file or directory is hidden. It is not included in an ordinary * directory listing. */ public boolean isHidden() { return (attributeDword & FILE_ATTRIBUTE_HIDDEN) != 0; } /** * The file or directory is part of the operating system or is used * exclusively by the operating system. */ public boolean isSystem() { return (attributeDword & FILE_ATTRIBUTE_SYSTEM) != 0; } /** The handle identifies a directory. */ public boolean isDirectory() { return (attributeDword & FILE_ATTRIBUTE_DIRECTORY) != 0; } /** * The file or directory is an archive file. Applications use this * attribute to mark files for backup or removal. */ public boolean isArchive() { return (attributeDword & FILE_ATTRIBUTE_ARCHIVE) != 0; } /** * The file does not have other attributes. This attribute is valid only * if used alone. */ public boolean isNormal() { return (attributeDword & FILE_ATTRIBUTE_NORMAL) != 0; } /** * The file is being used for temporary storage. File systems avoid * writing data back to mass storage if sufficient cache memory is * available, because often the application deletes the temporary file * after the handle is closed. In that case, the system can entirely * avoid writing the data. Otherwise, the data will be written after the * handle is closed. */ public boolean isTemporary() { return (attributeDword & FILE_ATTRIBUTE_TEMPORARY) != 0; } /** The file is a sparse file. */ public boolean isSparseFile() { return (attributeDword & FILE_ATTRIBUTE_SPARSE_FILE) != 0; } /** The file or directory has an associated reparse point. */ public boolean isReparsePoint() { return (attributeDword & FILE_ATTRIBUTE_REPARSE_POINT) != 0; } /** * The file or directory is compressed. For a file, this means that all * of the data in the file is compressed. For a directory, this means * that compression is the default for newly created files and * subdirectories. */ public boolean isCompressed() { return (attributeDword & FILE_ATTRIBUTE_COMPRESSED) != 0; } /** * The file or directory is encrypted. For a file, this means that all * data in the file is encrypted. For a directory, this means that * encryption is the default for newly created files and subdirectories. */ public boolean isEncrypted() { return (attributeDword & FILE_ATTRIBUTE_ENCRYPTED) != 0; } /** * The file data is not available immediately. This attribute indicates * that the file data is physically moved to offline storage. This * attribute is used by Remote Storage, the hierarchical storage * management software. Applications should not arbitrarily change this * attribute. */ public boolean isOffline() { return (attributeDword & FILE_ATTRIBUTE_OFFLINE) != 0; } /** A file is a virtual file. */ public boolean isVirtual() { return (attributeDword & FILE_ATTRIBUTE_VIRTUAL) != 0; } }