00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #if !defined SBFILEHELPER_H
00024 #define SBFILEHELPER_H
00025
00026 #ifndef _WIN32
00027 #include <unistd.h>
00028 #endif // _WIN32
00029
00030 #include <sys/types.h>
00031 #include <sys/stat.h>
00032
00033 #ifdef _WIN32
00034 #include <io.h>
00035 #define F_OK 0
00036 #define W_OK 2
00037 #define R_OK 4
00038 #define X_OK 0
00039 #endif
00040
00041 #include <Inventor/SbString.h>
00042
00059 class SbFileHelper
00060 {
00061
00062 public:
00063 #ifdef WIN32
00064 typedef struct __stat64 Stat;
00065 #else
00066 typedef struct stat64 Stat;
00067 #endif
00068
00077 static FILE* open( const SbString& filename, const char* flags );
00078
00084 static void close( FILE* fp );
00085
00089 static
00090 #if defined(_WIN32)
00091 unsigned __int64
00092 #else
00093 unsigned long long
00094 #endif
00095 getFileSize( const SbString& filename );
00096
00100 enum FileAccess
00101 {
00103 EXISTENCE = F_OK,
00105 WRITE = W_OK,
00107 READ = R_OK,
00109 READ_WRITE = W_OK + R_OK,
00111 EXECUTE = X_OK
00112 };
00113
00126 static SbBool isAccessible( const SbString& filename, FileAccess mode=READ );
00127
00134 static SbString getExtension( const SbString& filename );
00135
00139 static SbBool isUrl( const SbString& filename );
00140
00144 static SbBool isFileSystemUrl( const SbString& filename );
00145
00155 static SbString makeFileSystemURL( const SbString& filename );
00156
00164 static SbString fileSystemURLToFilename( const SbString& url );
00165
00173 static SbString getBaseName( const SbString& fullFilePath );
00174
00182 static SbString getDirName( const SbString& fullFilePath );
00183
00191 static SbString toUnixPath( const SbString& path );
00192
00199 static SbString toWindowsPath( const SbString& path );
00200
00206 static SbString getTempDirectory();
00207
00215 static SbString getTempFilename( const SbString& path, const SbString& prefix );
00216
00223 static int createDirectory( const SbString& directory );
00224
00228 static SbString getCurrentDirectory();
00229
00235 static int setCurrentDirectory( const SbString& directory );
00236
00240 static bool containsWindowsDrive( const SbString& path );
00241
00248 static int removeFile( const SbString& fileName );
00249
00262 static bool getStat(const SbString& filename, SbFileHelper::Stat& stat);
00263
00267 static SbString cleanUpPath( const SbString& path );
00268
00274 static SbString expandString( const SbString& string );
00275
00300 static void listFiles(const SbString& path, const SbString& pattern, std::vector<SbString>& files);
00301
00302 private:
00303
00312 static int findExtensionPos( const SbString & filename );
00313
00318 static void setFileExtension( SbString & _filename, const SbString &_strExt );
00319
00323 static SbString cleanupBadNetworkName( const SbString& string );
00324
00330 static SbString getOivLocalAppDataPath();
00331
00335 static SbString getOivLibrariesPath();
00336
00340 static bool createSubDirectories(const SbString& path);
00341
00345 static SbBool deleteFile(const SbString& file);
00346
00347
00348
00349 private:
00350
00351
00352
00353 private:
00354
00355 };
00356
00357
00358
00359
00360
00361 #endif // SBFILEHELPER_H
00362
00363