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
00060 class SbFileHelper
00061 {
00062
00063 public:
00064 #ifdef WIN32
00065 typedef struct __stat64 Stat;
00066 #else
00067 typedef struct stat64 Stat;
00068 #endif
00069
00078 static FILE* open( const SbString& filename, const char* flags );
00079
00085 static void close( FILE* fp );
00086
00090 static
00091 #if defined(_WIN32)
00092 unsigned __int64
00093 #else
00094 unsigned long long
00095 #endif
00096 getFileSize( const SbString& filename );
00097
00101 enum FileAccess
00102 {
00104 EXISTENCE = F_OK,
00106 WRITE = W_OK,
00108 READ = R_OK,
00110 READ_WRITE = W_OK + R_OK,
00112 EXECUTE = X_OK
00113 };
00114
00127 static SbBool isAccessible( const SbString& filename, FileAccess mode=READ );
00128
00135 static SbString getExtension( const SbString& filename );
00136
00140 static SbBool isUrl( const SbString& filename );
00141
00145 static SbBool isFileSystemUrl( const SbString& filename );
00146
00156 static SbString makeFileSystemURL( const SbString& filename );
00157
00165 static SbString fileSystemURLToFilename( const SbString& url );
00166
00174 static SbString getBaseName( const SbString& fullFilePath );
00175
00183 static SbString getDirName( const SbString& fullFilePath );
00184
00192 static SbString toUnixPath( const SbString& path );
00193
00200 static SbString toWindowsPath( const SbString& path );
00201
00207 static SbString getTempDirectory();
00208
00216 static SbString getTempFilename( const SbString& path, const SbString& prefix );
00217
00224 static int createDirectory( const SbString& directory );
00225
00229 static SbString getCurrentDirectory();
00230
00236 static int setCurrentDirectory( const SbString& directory );
00237
00241 static bool containsWindowsDrive( const SbString& path );
00242
00249 static int removeFile( const SbString& fileName );
00250
00263 static bool getStat(const SbString& filename, SbFileHelper::Stat& stat);
00264
00268 static SbString cleanUpPath( const SbString& path );
00269
00275 static SbString expandString( const SbString& string );
00276
00301 static void listFiles(const SbString& path, const SbString& pattern, std::vector<SbString>& files);
00302
00303 private:
00304
00313 static int findExtensionPos( const SbString & filename );
00314
00319 static void setFileExtension( SbString & _filename, const SbString &_strExt );
00320
00324 static SbString cleanupBadNetworkName( const SbString& string );
00325
00331 static SbString getOivLocalAppDataPath();
00332
00336 static SbString getOivLibrariesPath();
00337
00341 static bool createSubDirectories(const SbString& path);
00342
00346 static SbBool deleteFile(const SbString& file);
00347
00348
00349
00350 private:
00351
00352
00353
00354 private:
00355
00356 };
00357
00358
00359
00360
00361
00362 #endif // SBFILEHELPER_H
00363
00364