OpendTect  6.3
file.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Nanne Hemstra
8  Date: January 2010
9  Contents: File utitlities
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "basicmod.h"
15 
16 #include "enums.h"
17 #include "factory.h"
18 #include "gendefs.h"
19 #include "strmdata.h"
20 #include "timefun.h"
21 
22 class BufferStringSet;
23 class Executor;
24 class uiString;
25 
26 
29 namespace File
30 {
31 
32 mGlobal(Basic) bool exists(const char*);
33 mGlobal(Basic) bool isReadable(const char*);
34 mGlobal(Basic) bool isEmpty(const char*);
35 mGlobal(Basic) bool isDirEmpty(const char*);
36 mGlobal(Basic) bool isFile(const char*);
37 mGlobal(Basic) bool isDirectory(const char*);
38 mGlobal(Basic) bool isURI(const char*&);
40 
41 mGlobal(Basic) const char* getCanonicalPath(const char*);
42 mGlobal(Basic) const char* getRelativePath(const char* reltodir,
43  const char* fnm);
44 mGlobal(Basic) void makeRecursiveFileList(const char* dir,
45  BufferStringSet& filelist,
46  bool followlinks=false);
47 
48 mGlobal(Basic) bool createLink(const char* from,const char* to);
49 mGlobal(Basic) bool isLink(const char*);
50 mGlobal(Basic) const char* linkTarget(const char* linkname);
52 mGlobal(Basic) const char* linkEnd(const char* linkname);
55 mGlobal(Basic) const char* linkValue(const char* linkname);
57 
58 mGlobal(Basic) void hide(const char*,bool yn);
59 mGlobal(Basic) bool isHidden(const char*);
60 mGlobal(Basic) bool isWritable(const char*);
61 mGlobal(Basic) bool makeWritable(const char*,bool yesno,
62  bool recursive);
63 mGlobal(Basic) bool isExecutable(const char*);
64 mGlobal(Basic) bool makeExecutable(const char*,bool yesno);
65 mGlobal(Basic) bool setPermissions(const char*,const char* perms,
66  bool recursive);
67 mGlobal(Basic) bool isInUse(const char* fnm);
68 
69 mGlobal(Basic) bool createDir(const char*);
70 mGlobal(Basic) bool rename(const char* oldname,const char* newname);
71 mGlobal(Basic) bool copy(const char* from,const char* to,
72  uiString* errmsg=0);
73 mGlobal(Basic) Executor* getRecursiveCopier(const char* from,
74  const char* to);
75 mGlobal(Basic) Executor* getRecursiveDeleter(const char* dirnm,
76  const BufferStringSet* externallist=0,
77  bool filesonly=false);
78 mGlobal(Basic) bool resize(const char*,od_int64);
79 mGlobal(Basic) bool remove(const char*);
80 mGlobal(Basic) bool saveCopy(const char* from,const char* to);
81 mGlobal(Basic) bool copyDir(const char* from,const char* to,
82  uiString* errmsg=0);
83 mGlobal(Basic) bool removeDir(const char*);
84 mGlobal(Basic) bool changeDir(const char* path);
85 mGlobal(Basic) bool checkDirectory(const char* fnm,bool forread,
86  uiString& errmsg);
90 mGlobal(Basic) bool getContent(const char*,BufferString&);
91 mGlobal(Basic) od_int64 getFileSize(const char* fnm,
92  bool followlink=true);
93 mGlobal(Basic) od_int64 getKbSize(const char*);
95 mGlobal(Basic) BufferString getFileSizeString(const char* fnm);
96 
97 mGlobal(Basic) const char* timeCreated(const char* filenm,
98  const char* fmt=Time::defDateTimeFmt());
99 mGlobal(Basic) const char* timeLastModified(const char* filenm,
100  const char* fmt=Time::defDateTimeFmt());
101 mGlobal(Basic) od_int64 getTimeInSeconds(const char*,bool modif=true);
102 
103 mGlobal(Basic) const char* getCurrentPath();
104 mGlobal(Basic) const char* getHomePath();
105 mGlobal(Basic) const char* getTempPath();
106 mGlobal(Basic) const char* getRootPath(const char* path);
107 
108 
109 enum ViewStyle { Text, Table, Log, Bin };
111 
113 {
114 public:
115 
117  : style_(vs)
118  , editable_(false)
119  , maxnrlines_(vs==Table ? 500 : 10000) {}
120 
121  static const char* sKeyFile() { return "file"; }
122  static const char* sKeyMaxLines() { return "maxlines"; }
123  static const char* sKeyStyle() { return "style"; }
124  static const char* sKeyEdit() { return "edit"; }
125 
128  bool editable_;
129 
130 };
131 
132 mGlobal(Basic) bool launchViewer(const char*,
133  const ViewPars& vp=ViewPars());
134 
135 
136 mExpClass(Basic) SystemAccess : public RefCount::Referenced
137 {
138 public:
139  static
140  RefMan<SystemAccess> get(const char* fnm);
145  virtual bool exists(const char*,bool forread) const = 0;
146  virtual bool isReadable(const char*) const = 0;
147  virtual bool isFile(const char*) const = 0;
148  virtual bool isDirectory(const char*) const = 0;
149 
150  virtual bool remove(const char*,bool recursive=true) const = 0;
151  virtual bool setWritable(const char*,bool yn,
152  bool recursive=true) const = 0;
153  virtual bool isWritable(const char*) const = 0;
154  virtual bool rename(const char* from,const char*) = 0;
155  virtual bool copy(const char* from,const char* to,
156  uiString* errmsg=0) const = 0;
157  virtual od_int64 getFileSize( const char* fnm, bool followlink ) = 0;
158 
159  virtual StreamData createOStream(const char*,
160  bool binary=true,
161  bool editmode=false) const = 0;
167  virtual StreamData createIStream(const char*,bool binary=true) const = 0;
169 
171 
172  static BufferString getProtocol(const char* fnm,bool acceptnone);
173  static BufferString removeProtocol(const char*);
174 
175 protected:
176  virtual ~SystemAccess() {}
177 };
178 
179 
182 public:
183  virtual bool exists(const char*,bool forread) const;
184  virtual bool isReadable(const char*) const;
185  virtual bool isFile(const char*) const;
186  virtual bool isDirectory(const char*) const;
187 
188  virtual bool remove(const char*,bool recursive=true) const;
189  virtual bool setWritable(const char*,bool yn,bool recursive) const;
190  virtual bool isWritable(const char*) const;
191  virtual bool rename(const char* from,const char*);
192  virtual bool copy(const char* from,const char* to,
193  uiString* errmsg=0) const;
194  virtual od_int64 getFileSize(const char*, bool followlink);
195 
196  virtual StreamData createOStream(const char*,
197  bool binary,bool editmode) const;
198 
199  virtual StreamData createIStream(const char*,bool binary) const;
200 
201  static void initClass();
202  static const char* sFactoryKeyword() { return "file"; }
203  static uiString sFactoryDisplayName() { return tr("Local file"); }
204 
205  virtual const char* factoryKeyword() const { return sFactoryKeyword(); }
206  virtual uiString factoryDisplayName() const
207  { return sFactoryDisplayName(); }
208 
209 
210 private:
211  static SystemAccess* createInstance() { return new LocalFileSystemAccess; }
212 };
213 
214 } // namespace File
bool rename(const char *oldname, const char *newname)
bool copy(const char *from, const char *to, uiString *errmsg=0)
#define mExpClass(module)
Definition: commondefs.h:157
bool isDirEmpty(const char *)
Interface for several file and directory related services.
Definition: file.h:29
bool editable_
only if possible
Definition: file.h:128
bool isLink(const char *)
static const char * sKeyStyle()
Definition: file.h:123
const char * defDateTimeFmt()
bool isFile(const char *)
bool launchViewer(const char *, const ViewPars &vp=ViewPars())
bool makeWritable(const char *, bool yesno, bool recursive)
Executor * getRecursiveCopier(const char *from, const char *to)
bool checkDirectory(const char *fnm, bool forread, uiString &errmsg)
T to(const F &fr)
Definition: convert.h:31
Definition: file.h:109
const char * timeLastModified(const char *filenm, const char *fmt=Time::defDateTimeFmt())
Definition: file.h:109
bool isURI(const char *&)
if local, will remove &#39;file://&#39;
bool makeExecutable(const char *, bool yesno)
#define mODTextTranslationClass(clss)
Definition: uistring.h:37
#define mGlobal(module)
Definition: commondefs.h:160
#define mDeclareNameSpaceEnumUtils(mod, enm)
Definition: enums.h:205
virtual ~SystemAccess()
Definition: file.h:176
#define od_int64
Definition: plftypes.h:34
virtual uiString factoryDisplayName() const
Definition: file.h:206
ViewStyle style_
Definition: file.h:126
bool isHidden(const char *)
bool isExecutable(const char *)
bool createDir(const char *)
Definition: file.h:109
void hide(const char *, bool yn)
only Windows
Executor * getRecursiveDeleter(const char *dirnm, const BufferStringSet *externallist=0, bool filesonly=false)
Definition: uistring.h:88
Set of BufferString objects.
Definition: bufstringset.h:25
bool changeDir(const char *path)
BufferString getFileSizeString(int64_t fileszinkb)
const char * linkValue(const char *linkname)
not sure why and when to use - used by zip
ViewStyle
Definition: file.h:109
const char * getTempPath()
bool getContent(const char *, BufferString &)
Definition: geom2dascio.h:18
static const char * sKeyFile()
Definition: file.h:121
bool isDirectory(const char *)
bool saveCopy(const char *from, const char *to)
static const char * sKeyMaxLines()
Definition: file.h:122
int64_t getFileSize(const char *fnm, bool followlink=true)
bytes
Holds data to use and close an iostream.
Definition: strmdata.h:29
Definition: file.h:136
static const char * sFactoryKeyword()
Definition: file.h:202
bool isReadable(const char *)
const char * timeCreated(const char *filenm, const char *fmt=Time::defDateTimeFmt())
#define mDefineFactoryInClass(T, funcname)
Definition: factory.h:424
virtual const char * factoryKeyword() const
Definition: file.h:205
bool removeDir(const char *)
static SystemAccess * createInstance()
Definition: file.h:211
static uiString sFactoryDisplayName()
Definition: file.h:203
const char * getCurrentPath()
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size...
Definition: bufstring.h:38
bool isEmpty(const char *)
int64_t getKbSize(const char *)
bool resize(const char *, int64_t)
Definition: file.h:109
const char * linkTarget(const char *linkname)
Direct, first target.
const char * getHomePath()
bool isInUse(const char *fnm)
bool isWritable(const char *)
const char * getRootPath(const char *path)
static const char * sKeyEdit()
Definition: file.h:124
Definition: file.h:112
ViewPars(ViewStyle vs=Text)
Definition: file.h:116
int maxnrlines_
max nr bytes when Bin
Definition: file.h:127
const char * getCanonicalPath(const char *)
const char * getRelativePath(const char *reltodir, const char *fnm)
Definition: file.h:180
#define mClass(module)
Definition: commondefs.h:161
bool createLink(const char *from, const char *to)
bool copyDir(const char *from, const char *to, uiString *errmsg=0)
bool exists(const char *)
bool setPermissions(const char *, const char *perms, bool recursive)
int64_t getTimeInSeconds(const char *, bool modif=true)
const char * linkEnd(const char *linkname)
static void initClass()
Definition: ptrman.h:200
Specification to enable chunkwise execution of a process.
Definition: executor.h:38
void makeRecursiveFileList(const char *dir, BufferStringSet &filelist, bool followlinks=false)

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017