// Windows/FileDir.h #ifndef __WINDOWS_FILE_DIR_H #define __WINDOWS_FILE_DIR_H #include "../Common/MyString.h" #include "FileIO.h" namespace NWindows { namespace NFile { namespace NDir { bool GetWindowsDir(FString &path); bool GetSystemDir(FString &path); bool SetDirTime(CFSTR path, const FILETIME *cTime, const FILETIME *aTime, const FILETIME *mTime); bool SetFileAttrib(CFSTR path, DWORD attrib); bool MyMoveFile(CFSTR existFileName, CFSTR newFileName); #ifndef UNDER_CE bool MyCreateHardLink(CFSTR newFileName, CFSTR existFileName); #endif bool RemoveDir(CFSTR path); bool CreateDir(CFSTR path); bool CreateComplexDir(CFSTR path); bool DeleteFileAlways(CFSTR name); bool RemoveDirWithSubItems(const FString &path); bool MyGetFullPathName(CFSTR path, FString &resFullPath); bool GetFullPathAndSplit(CFSTR path, FString &resDirPrefix, FString &resFileName); bool GetOnlyDirPrefix(CFSTR path, FString &resDirPrefix); #ifndef UNDER_CE bool SetCurrentDir(CFSTR path); bool GetCurrentDir(FString &resultPath); #endif bool MyGetTempPath(FString &resultPath); class CTempFile { bool _mustBeDeleted; FString _path; void DisableDeleting() { _mustBeDeleted = false; } public: CTempFile(): _mustBeDeleted(false) {} ~CTempFile() { Remove(); } const FString &GetPath() const { return _path; } bool Create(CFSTR pathPrefix, NIO::COutFile *outFile); // pathPrefix is not folder prefix bool CreateRandomInTempFolder(CFSTR namePrefix, NIO::COutFile *outFile); bool Remove(); bool MoveTo(CFSTR name, bool deleteDestBefore); }; class CTempDir { bool _mustBeDeleted; FString _path; public: CTempDir(): _mustBeDeleted(false) {} ~CTempDir() { Remove(); } const FString &GetPath() const { return _path; } void DisableDeleting() { _mustBeDeleted = false; } bool Create(CFSTR namePrefix) ; bool Remove(); }; #if !defined(UNDER_CE) class CCurrentDirRestorer { FString _path; public: bool NeedRestore; CCurrentDirRestorer(): NeedRestore(true) { GetCurrentDir(_path); } ~CCurrentDirRestorer() { if (!NeedRestore) return; FString s; if (GetCurrentDir(s)) if (s != _path) SetCurrentDir(_path); } }; #endif }}} #endif