Frost Moon Project

Src/sslib/FileOperation.h -MagicPNG Ver.1.00- - Frost Moon Project   アクセスランキング  

Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > FileOperation.h

 
//FileOperation.h

#ifndef _FILEOPERATION_H_883BE0AE_F9BD_4775_B57F_1795453033CD
#define _FILEOPERATION_H_883BE0AE_F9BD_4775_B57F_1795453033CD



namespace sslib{
namespace fileoperation{

//対象ディレクトリが多階層に亘り存在しなくても作成
bool createDirectory(const TCHAR* dir_path_orig,LPSECURITY_ATTRIBUTES security_attributes=NULL);

//ファイル/ディレクトリをリネーム
bool renameFile(const TCHAR* src_orig,const TCHAR* dest_orig);

//ディレクトリやファイルをごみ箱に送る(MAX_PATH制限有)
bool moveToRecycleBinSH(const TCHAR* dir_path_orig);

//ファイルやディレクトリを移動(MAX_PATH制限有)
bool moveFileSH(const TCHAR* src_path_orig,const TCHAR* dest_path_orig,FILEOP_FLAGS flag=FOF_SILENT|FOF_NOERRORUI|FOF_NOCONFIRMATION);

//ファイルやディレクトリをコピー(MAX_PATH制限有)
bool copyFileSH(const TCHAR* src_path_orig,const TCHAR* dest_path_orig,FILEOP_FLAGS flag=FOF_SILENT|FOF_NOERRORUI|FOF_NOCONFIRMATION);

//ディレクトリをディレクトリへ移動
void moveDirToDir(const TCHAR* src_path_orig,const TCHAR* dest_path_orig);

//ファイルやディレクトリを削除(MAX_PATH制限有)
bool removeFileSH(const TCHAR* file_path_orig);
//ファイルやディレクトリを削除
bool removeFile(const TCHAR* file_path_orig);

//ディレクトリを削除
void deleteDirectory(const TCHAR* dir_path_orig);

//ディレクトリ内のファイルやディレクトリを削除(指定されたディレクトリ自身は削除しない)
void deleteContents(const TCHAR* dir_path);

//削除予約
class scheduleDelete:private misc::NonCopyable<scheduleDelete>{
public:
    scheduleDelete(const TCHAR* file_path=NULL):m_file_path(){if(file_path)m_file_path=file_path;}
    ~scheduleDelete(){
        if(path::fileExists(m_file_path.c_str())){
            if(path::isDirectory(m_file_path.c_str())){
                deleteContents(m_file_path.c_str());
                if(!::RemoveDirectory(path::addLongPathPrefix(m_file_path).c_str())){
                    removeFile(m_file_path.c_str());
                }
            }else{
                ::DeleteFile(m_file_path.c_str());
            }
        }
    }
    void set(const TCHAR* file_path){m_file_path=file_path;}
    inline const tstring filepath()const{return m_file_path;}
private:
    tstring m_file_path;
};

//一時的にカレントディレクトリを変更
class temporaryCurrentDirectory:private misc::NonCopyable<temporaryCurrentDirectory>{
public:
    temporaryCurrentDirectory(const TCHAR* dir_path):m_cur_path(){
        m_cur_path=path::getCurrentDirectory();
        if(!m_cur_path.empty())::SetCurrentDirectory(dir_path);
    }
    ~temporaryCurrentDirectory(){
        if(!m_cur_path.empty())::SetCurrentDirectory(m_cur_path.c_str());
    }
private:
    tstring m_cur_path;
};

//ファイルのバージョンを取得
bool getFileVersion(const TCHAR* file_path,DWORD* major_ver,DWORD* minor_ver);

//ファイルのサイズを取得
long long getFileSize(const TCHAR* file_path);

//ディレクトリのサイズを取得
long long getDirectorySize(const TCHAR* dir_path);

//分割ファイルを削除
bool removeSplitFile(const TCHAR* file_name,bool recycle_bin);

//リソースからファイルを取り出す
bool extractFromResource(const HINSTANCE instance_handle,const WORD id,const TCHAR*type,const TCHAR* file_name);

//ショートカット作成
bool createShortcut(const TCHAR* shortcut_file,const TCHAR* src_file,const TCHAR* args=NULL,int show_cmd=SW_SHOWNORMAL,const TCHAR* description=NULL,const TCHAR* working_dir=NULL);

//namespace fileoperation
}
//namespace sslib
}

#endif //_FILEOPERATION_H_883BE0AE_F9BD_4775_B57F_1795453033CD


Home > ソフトウェア > MagicPNG > MagicPNG100.zip > Src > sslib > FileOperation.h