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

📄 filesys.h

📁 A Model-View-Controller Framework that integrates with the MFC Doc/View architecture.
💻 H
字号:
//------------------------------------------------------------------------------
//$Workfile: FileSys.h $
//$Header: /SbjCore/Sys/FileSys.h 4     4/19/07 3:04p Steve $
//
// Stingray Software Extension Classes
// Copyright (C) 1995 Stingray Software Inc,
// All rights reserved
//   		
//
//$Revision: 4 $
//
//@doc
//
//@module FileSys | Renamed Stingray registry class to break full SEC dependency
//
//-----------------------------------------------------------------------------

#pragma once

#ifdef WIN32

#ifndef UNDER_CE

#ifndef _INC_DOS
#include <dos.h>
#endif

#ifndef _INC_DIRECT
#include <direct.h>
#endif

#endif  //UNDER_CE (WindowsCE)

// winbase.h defines this to be (0x100000L) for some reason.
#ifdef GetFreeSpace
#undef GetFreeSpace
#endif

#else

#include "dos.h"
#include "direct.h"

#endif

#define DRIVE_UNDETERMINED 0

namespace SbjCore
{
	namespace Sys
	{
		/** the FileSys class lifted from Stingray to break the Stingray dependency, see Stingray documentation for details.
		*/
		class AFX_EXT_CLASS FileSys : public CObject
		{

		// Constructors
		public:
			
			//@access Creation/Initialization

			//@cmember
			/* Constructs a FileSys object.*/
			FileSys();

			//@access Attributes

		private:

		#ifdef WIN32

			WIN32_FIND_DATA  m_FileInfo;
			HANDLE           m_hFind;

		#else

			struct _find_t	m_FileInfo;

		#endif

			int              m_nMaxFileNameLength;


		// Implementation
		public:
		  virtual ~FileSys();        // Destructor

		  // File/Directory Attributes

		#ifndef WIN32
		#define FILE_ATTRIBUTE_NORMAL CFile::normal
		#endif

			//@cmember,menum
			/* File attributes*/
		  enum Attribute {
			normal    = FILE_ATTRIBUTE_NORMAL,  //@@emem Normal Files (Win32 API version 0x80)
			readOnly  = CFile::readOnly,        //@@emem Read-Only Files
			hidden    = CFile::hidden,          //@@emem Hidden Files
			system    = CFile::system,          //@@emem System Files
			volume    = CFile::volume,          //@@emem Volume Label
			directory  = CFile::directory,      //@@emem Subdirectory Entry
			archive    = CFile::archive,        //@@emem Archive File
			allfiles  = 0xFFFFFFFF				//@@emem All files
		  } ;


			//@access File Operations

			//@cmember
			/* Compares the contents of one file with another.*/
			BOOL CompareFiles(const CString& FileName1, const CString& FileName2, const unsigned long lBuffSize = 10240);
			
			//@cmember
			/* Copies the contents of one file to another.*/
			BOOL CopyFile(const CString& SourceFileName, const CString& DestFileName, const unsigned long lBuffSize = 10240);
			
			//@cmember
			/* Copies more than one file to another subdirectory.*/
			BOOL CopyFiles(const CString& FileSpec, const CString& DestPath, const BOOL bIgnoreErrors = FALSE, const unsigned long eFileAttrib = normal);

			//@cmember
			/* Deletes a files.*/
			BOOL DeleteFile(const CString& FileName);
			
			//@cmember
			/* Deletes specified files (i.e., *.txt).*/
			BOOL DeleteFiles(const CString& FileSpec, const unsigned long eFileAttrib = normal);

			//@cmember
			/* Determines if a file exists.*/
			BOOL FileExists(const CString& PathAndFileName);
			
			//@cmember
			/* Returns the time and date the file was last accessed.*/
			BOOL GetFileAccessTime(const CString& FileName, CTime& time);
			
			//@cmember
			/* Returns the attribute bits for the file.*/
			BOOL GetFileAttribute(const CString& FileName, BYTE& Attribute);

			//@cmember
			/* Returns the time and date the file was created.*/
			BOOL GetFileCreateTime(const CString& FileName, CTime& time);
			
			//@cmember
			/* Returns the time and date the file was last modified.*/
			BOOL GetFileModifyTime(const CString& FileName, CTime& time);
			
			//@cmember
			/* Returns the size of the file in bytes.*/
			BOOL GetFileSize(const CString& FileName, unsigned long& lSize);
			
			//@cmember
			/* Returns the file status.*/
			BOOL GetFileStatus(const CString& FileName, CFileStatus& FileStatus);
			
			//@cmember
			/* Renames a file.*/
			BOOL RenameFile(const CString& OldFileName, const CString& NewFileName);
			

			//@cmember
			/* Returns the time and date the file was created.*/
			BOOL GetFileCreateTime(const CString& FileName, COleDateTime& time);

			//@cmember
			/* Returns the time and date the file was last accessed.*/
			BOOL GetFileAccessTime(const CString& FileName, COleDateTime& time);

			//@cmember
			/* Returns the time and date the file was last modified.*/
			BOOL GetFileModifyTime(const CString& FileName, COleDateTime& time);
			
			//@access Parsing Operations

			//@cmember
			/* Appends a wildcard to a path.*/
			CString AppendWildcard(const CString& Path, const CString& Wildcard);

			//@cmember
			/* Returns the filename without path or extension.*/
			CString GetBaseFileName(const CString& PathAndFileName);

			//@cmember
			/* Returns the extension of the filename.*/
			CString GetExtension(const CString& PathAndFileName);
			
			//@cmember
			/* Returns the filename and extension of a filespec.*/
			CString GetFileName(const CString& PathAndFileName);
			
			//@cmember
			/* Returns the filesystem of the specified filespec.*/
			CString GetFileSystem(const CString& PathAndFileName);
			
			//@cmember
			/* Expands the specified filespec into a full path.*/
			CString GetFullPathName(const CString& PathAndFileName);
			
			//@cmember
			/* Returns the path of the specified filespec.*/
			CString GetPath(const CString& PathAndFileName, const BOOL bIncludeFileSystem = TRUE);
			

			
			//@access Directory Reading Operations

			//@cmember
			/* Returns a list of files based on a filespec.*/
			CStringList* GetDirectory(const CString& SearchString, const unsigned long eFileAttrib, const BOOL bRecurseSubDirs=FALSE, CStringList *pStringList = NULL);

			//@cmember
			/* Returns a single directory entry.*/
			CString* GetDirectoryEntry(const CString& Wildcard = "", const unsigned long eFileAttrib = normal);

			//@cmember
			/* Returns a list of files in the specified directory.*/
			CStringList* GetFileList(const CString& SearchString, const unsigned long eFileAttrib);

			//@cmember
			/* Returns a list of directories in the specified directory.*/
			CStringList* GetSubdirList(const CString& SearchDir, const BOOL bPathInName = TRUE);
			

			
			
			//@access Directory Operations

			//@cmember
			/* Compares the file names, sizes, and contents of two directories.*/
			BOOL CompareDirectories(const CString& PathName1, const CString& PathName2, const BOOL bRecurseSubdirs = FALSE, const BOOL bCompareFileContents = FALSE, const unsigned long eFileAttrib = normal);

			//@cmember
			/* Changes the current working directory.*/
			BOOL ChangeDirectory(const CString& NewDirectory);
			
			//@cmember
			/* Deletes a directory and all its files and subdirectories.*/
			BOOL DeleteDirectory(const CString& Directory, const BOOL bDeleteFilesAndDirs = FALSE);

			//@cmember
			/* Determines if the specified directory exists.*/
			BOOL DirectoryExists(const CString& Path);

			//@cmember
			/* Returns the current directory name.*/
			CString GetCurrentDirectory(const CString& FileSystem = "");

			//@cmember
			/* Returns the number of bytes in all the files in a directory.*/
			LONG GetDirectorySize(const CString& Directory = "", const CString& WildCard = "*.*", const BOOL bRecurseSubdirs = FALSE);

			//@cmember
			/* Creates a subdirectory.*/
			BOOL MakeDirectory(const CString& NewDirectory);
			
			//@cmember
			/* Makes a subdirectory (including all intervening dirs necessary).*/
			BOOL MakePath(const CString& NewDirectory);
			
			//@cmember
			/* Renames a directory.*/
			BOOL RenameDirectory(const CString& OldName, const CString& NewName);
			



			//@access File System Operations

			//@cmember
			/* Changes the current filesystem.*/
			BOOL ChangeFileSystem(const CString& FileSystem);
			
			//@cmember
			/* Returns the current filesystem.*/
			CString GetCurrentFileSystem();
			
			//@cmember
			/* Returns a list of available filesystems.*/
			CStringList* GetFileSystemList();
			
			//@cmember
			/* Returns the type of the specified filesystem.*/
			LONG GetFileSystemType(const CString& FileSystem);
			
			//@cmember
			/* Returns the number of available bytes on the specified filesystem.*/
			LONG GetFreeSpace(const CString& FileSystem);

		#if _MSC_VER >= 1200
			//@cmember
			/* Returns the number of available bytes on the specified filesystem.*/
		#ifndef UNDER_CE
			LONG64 GetFreeSpaceEx(const CString& FileSystem);
		#else
			ULONG GetFreeSpaceEx(const CString& FileSystem);
		#endif  //UNDER_CE (WindowsCE)
		#endif // #_MSC_VER >= 1200

			//@cmember
			/* Returns whether the specified file system exists.*/
			BOOL FileSystemExists(const CString& FileSystemName);
			
			//@cmember
			/* Returns the number of bytes (used and unused) on the specified filesystem.*/
			LONG GetTotalSpace(const CString& FileSystem);

		#if _MSC_VER >= 1200
			//@cmember
			/* Returns the number of bytes (used and unused) on the specified filesystem.*/
		#ifndef UNDER_CE
			LONG64 GetTotalSpaceEx(const CString& FileSystem);
		#else
			ULONG GetTotalSpaceEx(const CString& FileSystem);
		#endif  //UNDER_CE (WindowsCE)
		#endif //_MSC_VER >= 1200

			//@cmember
			/* Returns the volume label of the specified filesystem.*/
			CString GetVolumeLabel(const CString& FileSystem);
			
			//@cmember
			/* Determines if the specified filesystem is writeable.*/
			BOOL IsReadOnlyFileSystem(const CString& FileSystem);
			
			static void Sort(CStringList *pStringList, BOOL bCase = TRUE);
			
			//@cmember
			/* Returns the current directory name.*/
			CString GetModuleDirectory(HINSTANCE hInst = NULL);

			
		protected:
		  BOOL          ChangeFileSystem(const char cFileSystem);
		  BOOL          CloseFile(CFile *pFile) const;
		  BOOL          GetADirectoryEntry(CString &fileName, const CString& Wildcard = "", const unsigned long eFileAttrib = normal);

		}; // FileSys
	}
}

⌨️ 快捷键说明

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