SourceForge.jp

dkutilFSWin32Common.h

説明を見る。
00001 
00011 #ifndef _dkutilFSWin32Common__h_
00012 #define _dkutilFSWin32Common__h_
00013 
00014 #ifdef USE_DKINGYO_INCLUDE_SETTING_LIKE_BOOST
00015 #   include <dkutil/dkutilDefined.h>
00016 #   include <dkutil/dkutilString.h>
00017 #else
00018 #   include "dkutilString.h"
00019 #   include "dkutilDefined.h"
00020 #endif
00021 
00022 namespace dkutil{
00023         
00024 
00029 inline char *GetFileExtension( const char *PathName )
00030 {
00031 
00032     char *p;
00033     char *get_tail;
00034 
00035     get_tail = strtail( PathName );
00036     for( p = get_tail; p >= PathName; p-- ) // 文字列の最後から最初まで
00037     {
00038         if ( ('\\'==*p) && !isJMS(PathName,p-PathName) )
00039             return get_tail; // ファイル名はここまで
00040 
00041         if ( '.' == *p )
00042             return p+1; // '.' を発見
00043     }
00044     return get_tail; // 拡張子なし
00045 }//GetFileExtension
00046 
00047 
00048 
00050 
00055 
00056 inline bool GetFileSizeHighLow(const char *str,DWORD *high,DWORD *low){
00057     WIN32_FIND_DATA findData={0};
00058     HANDLE hFind=NULL;
00059     // ファイルサイズ取得
00060     if((hFind = FindFirstFile(str,&findData)) == INVALID_HANDLE_VALUE){
00061         return false;
00062     }
00063 
00064     //ファイルのサイズをヴちこむ
00065     *high = findData.nFileSizeHigh;
00066     *low = findData.nFileSizeLow;
00067     FindClose(hFind);
00068     return true;
00069 }
00074 
00075 inline bool GetFileSize(const char *str,ULONGLONG *GetSize){
00076     DWORD High=0,Low=0;
00077     bool result=false;
00078     result=GetFileSizeHighLow(str,&High,&Low);
00079     *GetSize = ( High * MAXDWORD ) + Low;
00080     return result;
00081 }
00082 
00087 
00088 inline DWORD GetFileSizeMini(const char *str){
00089     ULONGLONG Get;
00090     if(false==GetFileSize(str,&Get)) return 0;
00091     if(ULONG_MAX < Get) return 0;
00092     return static_cast< DWORD >(Get);
00093 }
00094 
00104 
00105 inline bool SaveBinary(void *data,int size,char *fname,char *mode="wb"){//="wb"
00106     FILE *fp;
00107     fp = fopen( fname , mode ) ;//wb
00108     if(fp==NULL) return false;
00109     fwrite( data , size  , 1 , fp ) ;
00110     //fwrite( data , sizeof(size)  , 1 , fp ) ;
00111     fclose( fp ) ;
00112     return true;
00113 }
00114 
00122 
00123 inline bool LoadBinary(void *data,int size,char *fname,char *mode ){//="rb"
00124     FILE *fp ;
00125     fp = fopen( fname , mode ) ;//rb
00126     if(fp==NULL)return false;
00127     fread( data ,  size , 1 , fp ) ;
00128     //fread( data , sizeof(size)  , 1 , fp ) ;
00129     fclose( fp ) ;
00130     return true;
00131 }
00132     
00143 extern int SaveFile(const char *filename,const void *filedata,size_t size);
00144 
00156 extern int LoadFile(const char *filename,void *Buff,size_t BuffSize,DWORD *GetReadSize);
00157     
00167 extern bool SaveData( char *pFile, void *pData, unsigned long Size );
00176 extern bool LoadData( char *pFile, void *pData, unsigned long Size );
00177 
00178 
00179 
00181 inline bool FileExist(const char *s){
00182     return (::GetFileAttributes(s) != 0xFFFFFFFF);
00183 }
00191 inline bool FileAndFolderExist( const char *pFile )
00192 {
00193     WIN32_FIND_DATA wfd;
00194     //  ファイル検索ハンドルを取得
00195     HANDLE hFile = ::FindFirstFile( pFile, &wfd );
00196     // 検索できたかチェック
00197     bool bRet = (hFile != INVALID_HANDLE_VALUE);
00198     // 検索ハンドルをクローズ
00199     ::FindClose( hFile );
00200     return bRet;
00201 }
00207 extern bool CreateDirectory( const char *pPath );
00208 
00209 
00210 
00219 extern bool CheckCDVolumeLabel( char *pLabel, char *pPath ,size_t pPathSize);
00220 
00232 inline bool CopyFileFromCD( LPCTSTR pSrc, LPCTSTR pDst ,bool bRewrite=false){
00233     //   コピー
00234   if ( ::CopyFile( pSrc, pDst, !(bRewrite) ) )
00235     {
00236     // ファイル属性を通常にする
00237       return (::SetFileAttributes( pDst, FILE_ATTRIBUTE_NORMAL ) != false);
00238   }
00239   return false;
00240 }
00241 
00242 inline bool CheckDrive(BYTE c){
00243     DWORD drive = ::GetLogicalDrives();
00244     if(!isAlpha(c)) throw std::invalid_argument("文字定数入れろっツーの!");
00245     c =(BYTE) tolower((int)c);
00246     c -= 'a';
00247     DWORD mask =(DWORD)pow(2,c);
00248     if(drive & mask){
00249         return true;
00250     }
00251     return false;
00252 }
00253 
00254 }//end of dkutil namespace
00255 
00256 
00257 
00258 
00259 
00260 
00261 
00262 
00263 #endif //end of include once 

dkutil 1.02リリース前 d金魚専用マニュアルバージョンに対してSun Dec 28 21:23:08 2003に生成されました。 doxygen 1.3.5