⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesystem.h

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 H
📖 第 1 页 / 共 2 页
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================////%/////////////////////////////////////////////////////////////////////////////#ifndef Pegasus_FileSystem_h#define Pegasus_FileSystem_h#include <Pegasus/Common/Config.h>#include <Pegasus/Common/String.h>#include <Pegasus/Common/ArrayInternal.h>#include <Pegasus/Common/InternalException.h>#include <Pegasus/Common/System.h>#include <Pegasus/Common/Linkage.h>#include <fstream>#include <cstdio>#if defined(PEGASUS_OS_OS400)#include "EBCDIC_OS400.h"#endif#include <Pegasus/Common/Buffer.h>PEGASUS_NAMESPACE_BEGIN/** The FileSystem class provides methods for manipulating the file system.    This class provides an methods for:    <ul>        <li>Manipulating directories (create, remove, change).</li>        <li>Checking files for ability to read and write.</li>        <li>Removing files.</li>        <li>Comparing files.</li>        <li>Loading files into memory.</li>    </ul>    The methods of this class are all static. So there is no need to    instantiate this class to use it. In fact, instantiation is precluded    by a private default constructor.    A word about the "NoCase" extensions. Some methods of this class have    a "NoCase" version. For example, there is a canRead() and a canReadNoCase().    The "NoCase" variation ignores the case of the file while it is being    located. For example, suppose there is a file called "File1". Then    canReadNoCase("file1") finds the file called "File1" and returns true (of    course there is a possibility that there really is a file called "file1"    in the same directory in which case the behavior of this method is    undefined). Notice that Windows does this anyway. These methods were    developed primarily for Unix which is case sensitive with respect to file    names. It should be noted that the no-case methods are slower (since they    must stat the directory and look at the file names).    The no-case variations are used by the repository which--according to    CIM--must treat two classes names with different case characterisits, but    othererwise similar, as identical. For example, "MyClass", "myclass", and    "MYCLASS" all refer to the same class. Since the default repository    implementation uses disk file names to represent class names (e.g., there    may be a file called "MyClass.#) that there must be a way of opening    a file without regard to its case.*/class PEGASUS_COMMON_LINKAGE FileSystem{public:    /** Determines whether file exists.        @param path path of the file.        @return true if the file exists.    */    static Boolean exists(const String& path);    /** Determine whether the file exists. Ignores case of the file.        @param path path of the file.        @param pathOut path of the file with actual case.        @return true if the file exists; false otherwise.    */    static Boolean existsNoCase(const String& path, String& pathOut);    /** Determine whether the file exists. Ignores the case of the file.        @param path path of the file.        @return true if the file exists; false otherwise.    */    static Boolean existsNoCase(const String& path);    /** Determines whether the file can be read.        @param path path of the file.        @return true if the file can be read.    */    static Boolean canRead(const String& path);    /** Determines whether the file can be read. Ignores case of file.        @param path path of the file.        @return true if the file can be read.    */    static Boolean canReadNoCase(const String& path);    /** Determines whether the file can be written.        @param path path of the file.        @return true if the file can be written.    */    static Boolean canWrite(const String& path);    /** Determines whether the file can be written. Ignores case of file.        @param path path of the file.        @return true if the file can be written.    */    static Boolean canWriteNoCase(const String& path);    /** Get the size of the file in bytes.        @param path path of file.        @param size set to size of file.        @return true on success.    */    static Boolean getFileSize(const String& path, Uint32& size);    /** Get the size of the file in bytes.        @param path path of file.        @param size set to size of file.        @return true on success.    */    static Boolean getFileSizeNoCase(const String& path, Uint32& size);    /** Removes a file.        @param path of file to be removed.        @return true on sucess.    */    static Boolean removeFile(const String& path);    /** Removes a file. Ignores case of file.        @param path of file to be removed.        @return true on sucess.    */    static Boolean removeFileNoCase(const String& path);    /** Loads contents of the file into the array. Note that the file is        opened using binary mode (newline sequences are not expanded to        carriage-return-line-feed sequences on Windows).        @param array set to the contents of the file upon return.        @param fileName name of file to be loaded.        @exception CannotOpenFile    */    static void loadFileToMemory(        Buffer& array,        const String& fileName);    /** Determines whether two files have exactly the same content.        @param path1 path of first file.        @param path2 path of second file.        @return true if files are identical.        @exception CannotOpenFile    */    static Boolean compareFiles(        const String& path1,        const String& path2);    /** Renames a file.        @param oldPath old name of file.        @param newPath new name of file.        @return true on success.    */    static Boolean renameFile(        const String& oldPath,        const String& newPath);    /** Same as rename file except that the case of the file referred to        by oldPath is ignored.    */    static Boolean renameFileNoCase(        const String& oldPath,        const String& newPath);    /** Copy a file.        @param fromPath name of existing file.        @param toPath name of new file.        @return true on success.    */    static Boolean copyFile(        const String& fromPath,        const String& toPath);    /** Opens a file and ignores the case of the file. Note that the file        will be opend in binary mode (no translation of carriage-return-line-        feed sequences on Windows).        @param os file stream to be opend.        @param path path of file to be opened.        @return true on success.    */    static Boolean openNoCase(PEGASUS_STD(ifstream)& is, const String& path);    /** Opens a file and ignores the case of the file. Note that the file        open mode of the file must be passed in.        @param os file stream to be opend.        @param path path of file to be opened.        @param mode mode to open the file in.        @return true on success.    */    static Boolean openNoCase(        PEGASUS_STD(fstream)& fs,        const String& path,        int mode);    /** Determines whether the path refers to a directory.        @param path path of the directory.        @return true if path refers to a directory.    */    static Boolean isDirectory(const String& path);    /** Changes the current directory.        @param path path of directory to be changed to.        @return true on success.    */    static Boolean changeDirectory(const String& path);    /** Creates a directory.        @param path path of directory to be created.        @return true on success.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -