uncollatedFileOperation.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2017 OpenFOAM Foundation
9  Copyright (C) 2020 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::fileOperations::uncollatedFileOperation
29 
30 Description
31  fileOperation that assumes file operations are local.
32 
33 \*---------------------------------------------------------------------------*/
34 
35 #ifndef fileOperations_uncollatedFileOperation_H
36 #define fileOperations_uncollatedFileOperation_H
37 
38 #include "fileOperation.H"
39 #include "OSspecific.H"
40 
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 
43 namespace Foam
44 {
45 namespace fileOperations
46 {
47 
48 /*---------------------------------------------------------------------------*\
49  Class uncollatedFileOperation Declaration
50 \*---------------------------------------------------------------------------*/
51 
53 :
54  public fileOperation
55 {
56 protected:
57 
58  // Protected Member Functions
59 
60  //- Search for an object.
61  // checkGlobal : also check undecomposed case
62  // isFile : true:check for file false:check for directory
64  (
65  const bool checkGlobal,
66  const bool isFile,
67  const IOobject& io,
68  const bool search
69  ) const;
70 
71  //- Lookup name of processorsDDD using cache. Return empty fileName
72  // if not found. Do not use any parallel synchronisation
74  (
75  const fileName&
76  ) const;
77 
78 
79 public:
80 
81  //- Runtime type information
82  TypeName("uncollated");
83 
84 
85  // Constructors
86 
87  //- Construct null
88  uncollatedFileOperation(bool verbose);
89 
90 
91  //- Destructor
92  virtual ~uncollatedFileOperation() = default;
93 
94 
95  // Member Functions
96 
97  // OSSpecific equivalents
98 
99  //- Make directory
100  virtual bool mkDir(const fileName&, mode_t=0777) const;
101 
102  //- Set the file mode
103  virtual bool chMod(const fileName&, const mode_t) const;
104 
105  //- Return the file mode
106  virtual mode_t mode
107  (
108  const fileName&,
109  const bool followLink = true
110  ) const;
111 
112  //- Return the file type: DIRECTORY, FILE or LINK
113  virtual fileName::Type type
114  (
115  const fileName&,
116  const bool followLink = true
117  ) const;
118 
119  //- Does the name exist (as DIRECTORY or FILE) in the file system?
120  // Optionally enable/disable check for gzip file.
121  virtual bool exists
122  (
123  const fileName&,
124  const bool checkGzip=true,
125  const bool followLink = true
126  ) const;
127 
128  //- Does the name exist as a DIRECTORY in the file system?
129  virtual bool isDir
130  (
131  const fileName&,
132  const bool followLink = true
133  ) const;
134 
135  //- Does the name exist as a FILE in the file system?
136  // Optionally enable/disable check for gzip file.
137  virtual bool isFile
138  (
139  const fileName&,
140  const bool checkGzip=true,
141  const bool followLink = true
142  ) const;
143 
144  //- Return size of file
145  virtual off_t fileSize
146  (
147  const fileName&,
148  const bool followLink = true
149  ) const;
150 
151  //- Return time of last file modification
152  virtual time_t lastModified
153  (
154  const fileName&,
155  const bool followLink = true
156  ) const;
157 
158  //- Return time of last file modification
159  virtual double highResLastModified
160  (
161  const fileName&,
162  const bool followLink = true
163  ) const;
164 
165  //- Read a directory and return the entries as a string list
166  virtual fileNameList readDir
167  (
168  const fileName&,
170  const bool filtergz=true,
171  const bool followLink = true
172  ) const;
173 
174  //- Copy, recursively if necessary, the source to the destination
175  virtual bool cp
176  (
177  const fileName& src,
178  const fileName& dst,
179  const bool followLink = true
180  ) const;
181 
182  //- Create a softlink. dst should not exist. Returns true if
183  // successful.
184  virtual bool ln(const fileName& src, const fileName& dst) const;
185 
186  //- Rename src to dst
187  virtual bool mv
188  (
189  const fileName& src,
190  const fileName& dst,
191  const bool followLink = false
192  ) const;
193 
194  //- Rename to a corresponding backup file
195  // If the backup file already exists, attempt with
196  // "01" .. "99" suffix
197  virtual bool mvBak
198  (
199  const fileName&,
200  const std::string& ext = "bak"
201  ) const;
202 
203  //- Remove a file, returning true if successful otherwise false
204  virtual bool rm(const fileName&) const;
205 
206  //- Remove a directory and its contents
207  virtual bool rmDir
208  (
209  const fileName& dir,
210  const bool silent = false
211  ) const;
212 
213 // //- Open a shared library. Return handle to library. Print error
214 // // message if library cannot be loaded (check = true)
215 // virtual void* dlOpen
216 // (
217 // const fileName& lib,
218 // const bool check = true
219 // ) const;
220 
221 
222  // (reg)IOobject functionality
223 
224  //- Search for an object. checkGlobal : also check undecomposed case
225  virtual fileName filePath
226  (
227  const bool checkGlobal,
228  const IOobject& io,
229  const word& typeName,
230  const bool search
231  ) const;
232 
233  //- Search for a directory. checkGlobal : also check undecomposed
234  // case
235  virtual fileName dirPath
236  (
237  const bool checkGlobal,
238  const IOobject& io,
239  const bool search
240  ) const;
241 
242  //- Search directory for objects. Used in IOobjectList.
243  virtual fileNameList readObjects
244  (
245  const objectRegistry& db,
246  const fileName& instance,
247  const fileName& local,
248  word& newInstance
249  ) const;
250 
251  //- Read object header from supplied file
252  virtual bool readHeader
253  (
254  IOobject&,
255  const fileName&,
256  const word& typeName
257  ) const;
258 
259  //- Reads header for regIOobject and returns an ISstream
260  // to read the contents.
262  (
263  regIOobject&,
264  const fileName&,
265  const word& typeName,
266  const bool procValid = true
267  ) const;
268 
269  //- Top-level read
270  virtual bool read
271  (
272  regIOobject&,
273  const bool masterOnly,
275  const word& typeName
276  ) const;
277 
278  //- Generate an ISstream that reads a file
279  virtual autoPtr<ISstream> NewIFstream(const fileName&) const;
280 
281  //- Generate an OSstream that writes a file
283  (
284  const fileName& pathname,
285  IOstreamOption streamOpt = IOstreamOption(),
286  const bool valid = true
287  ) const;
288 };
289 
290 
291 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
292 
293 } // End namespace fileOperations
294 } // End namespace Foam
295 
296 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
297 
298 #endif
299 
300 // ************************************************************************* //
Foam::IOobject
Defines the attributes of an object for which implicit objectRegistry management is supported,...
Definition: IOobject.H:104
OSspecific.H
Functions used by OpenFOAM that are specific to POSIX compliant operating systems and need to be repl...
Foam::fileName::FILE
A file.
Definition: fileName.H:79
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::fileOperation
An encapsulation of filesystem-related operations.
Definition: fileOperation.H:77
Foam::fileName
A class for handling file names.
Definition: fileName.H:69
Foam::fileOperations::uncollatedFileOperation::mkDir
virtual bool mkDir(const fileName &, mode_t=0777) const
Make directory.
Definition: uncollatedFileOperation.C:200
Foam::fileOperations::uncollatedFileOperation::rm
virtual bool rm(const fileName &) const
Remove a file, returning true if successful otherwise false.
Definition: uncollatedFileOperation.C:312
Foam::fileName::Type
Type
Enumerations to handle directory entry types.
Definition: fileName.H:76
Foam::fileOperations::uncollatedFileOperation::mode
virtual mode_t mode(const fileName &, const bool followLink=true) const
Return the file mode.
Definition: uncollatedFileOperation.C:220
Foam::fileOperations::uncollatedFileOperation::filePathInfo
fileName filePathInfo(const bool checkGlobal, const bool isFile, const IOobject &io, const bool search) const
Search for an object.
Definition: uncollatedFileOperation.C:61
Foam::fileOperations::uncollatedFileOperation::mvBak
virtual bool mvBak(const fileName &, const std::string &ext="bak") const
Rename to a corresponding backup file.
Definition: uncollatedFileOperation.C:302
Foam::fileOperations::uncollatedFileOperation::dirPath
virtual fileName dirPath(const bool checkGlobal, const IOobject &io, const bool search) const
Search for a directory. checkGlobal : also check undecomposed.
Definition: uncollatedFileOperation.C:403
Foam::fileOperations::uncollatedFileOperation::chMod
virtual bool chMod(const fileName &, const mode_t) const
Set the file mode.
Definition: uncollatedFileOperation.C:210
Foam::fileOperations::uncollatedFileOperation::filePath
virtual fileName filePath(const bool checkGlobal, const IOobject &io, const word &typeName, const bool search) const
Search for an object. checkGlobal : also check undecomposed case.
Definition: uncollatedFileOperation.C:375
Foam::objectRegistry
Registry of regIOobjects.
Definition: objectRegistry.H:60
Foam::fileOperations::uncollatedFileOperation::fileSize
virtual off_t fileSize(const fileName &, const bool followLink=true) const
Return size of file.
Definition: uncollatedFileOperation.C:272
format
word format(conversionProperties.get< word >("format"))
Foam::fileOperations::uncollatedFileOperation::readHeader
virtual bool readHeader(IOobject &, const fileName &, const word &typeName) const
Read object header from supplied file.
Definition: uncollatedFileOperation.C:479
Foam::fileOperations::uncollatedFileOperation::~uncollatedFileOperation
virtual ~uncollatedFileOperation()=default
Destructor.
Foam::tmpNrc
A class for managing temporary objects without reference counting.
Definition: tmpNrc.H:56
Foam::fileOperations::uncollatedFileOperation::highResLastModified
virtual double highResLastModified(const fileName &, const bool followLink=true) const
Return time of last file modification.
Definition: uncollatedFileOperation.C:292
Foam::fileOperations::uncollatedFileOperation::mv
virtual bool mv(const fileName &src, const fileName &dst, const bool followLink=false) const
Rename src to dst.
Definition: uncollatedFileOperation.C:364
Foam::IOstreamOption
The IOstreamOption is a simple container for options an IOstream can normally have.
Definition: IOstreamOption.H:63
Foam::IOstreamOption::streamFormat
streamFormat
Data format (ascii | binary)
Definition: IOstreamOption.H:70
fileOperation.H
Foam::fileOperations::uncollatedFileOperation::readObjects
virtual fileNameList readObjects(const objectRegistry &db, const fileName &instance, const fileName &local, word &newInstance) const
Search directory for objects. Used in IOobjectList.
Definition: uncollatedFileOperation.C:430
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::fileOperations::uncollatedFileOperation::TypeName
TypeName("uncollated")
Runtime type information.
Foam::fileOperations::uncollatedFileOperation::NewIFstream
virtual autoPtr< ISstream > NewIFstream(const fileName &) const
Generate an ISstream that reads a file.
Definition: uncollatedFileOperation.C:712
Foam::fileOperations::uncollatedFileOperation::readDir
virtual fileNameList readDir(const fileName &, const fileName::Type=fileName::FILE, const bool filtergz=true, const bool followLink=true) const
Read a directory and return the entries as a string list.
Definition: uncollatedFileOperation.C:331
Foam::fileOperations::uncollatedFileOperation::lookupProcessorsPath
virtual tmpNrc< dirIndexList > lookupProcessorsPath(const fileName &) const
Lookup name of processorsDDD using cache. Return empty fileName.
Definition: uncollatedFileOperation.C:171
Foam::fileOperations::uncollatedFileOperation::isDir
virtual bool isDir(const fileName &, const bool followLink=true) const
Does the name exist as a DIRECTORY in the file system?
Definition: uncollatedFileOperation.C:251
Foam::fileOperations::uncollatedFileOperation::rmDir
virtual bool rmDir(const fileName &dir, const bool silent=false) const
Remove a directory and its contents.
Definition: uncollatedFileOperation.C:321
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::regIOobject
regIOobject is an abstract class derived from IOobject to handle automatic object registration with t...
Definition: regIOobject.H:68
Foam::fileOperations::uncollatedFileOperation
fileOperation that assumes file operations are local.
Definition: uncollatedFileOperation.H:51
Foam::List< fileName >
Foam::fileOperations::uncollatedFileOperation::ln
virtual bool ln(const fileName &src, const fileName &dst) const
Create a softlink. dst should not exist. Returns true if.
Definition: uncollatedFileOperation.C:354
Foam::fileOperations::uncollatedFileOperation::uncollatedFileOperation
uncollatedFileOperation(bool verbose)
Construct null.
Definition: uncollatedFileOperation.C:183
Foam::search
fileName search(const word &file, const fileName &directory)
Recursively search the given directory for the file.
Definition: fileName.C:576
Foam::fileOperations::uncollatedFileOperation::read
virtual bool read(regIOobject &, const bool masterOnly, const IOstream::streamFormat format, const word &typeName) const
Top-level read.
Definition: uncollatedFileOperation.C:618
Foam::fileOperations::uncollatedFileOperation::exists
virtual bool exists(const fileName &, const bool checkGzip=true, const bool followLink=true) const
Does the name exist (as DIRECTORY or FILE) in the file system?
Definition: uncollatedFileOperation.C:240
Foam::fileOperations::uncollatedFileOperation::readStream
virtual autoPtr< ISstream > readStream(regIOobject &, const fileName &, const word &typeName, const bool procValid=true) const
Reads header for regIOobject and returns an ISstream.
Definition: uncollatedFileOperation.C:532
Foam::fileOperations::uncollatedFileOperation::cp
virtual bool cp(const fileName &src, const fileName &dst, const bool followLink=true) const
Copy, recursively if necessary, the source to the destination.
Definition: uncollatedFileOperation.C:343
Foam::fileOperations::uncollatedFileOperation::NewOFstream
virtual autoPtr< OSstream > NewOFstream(const fileName &pathname, IOstreamOption streamOpt=IOstreamOption(), const bool valid=true) const
Generate an OSstream that writes a file.
Definition: uncollatedFileOperation.C:722
Foam::fileOperations::uncollatedFileOperation::isFile
virtual bool isFile(const fileName &, const bool checkGzip=true, const bool followLink=true) const
Does the name exist as a FILE in the file system?
Definition: uncollatedFileOperation.C:261
Foam::fileOperations::uncollatedFileOperation::type
virtual fileName::Type type(const fileName &, const bool followLink=true) const
Return the file type: DIRECTORY, FILE or LINK.
Definition: uncollatedFileOperation.C:230
Foam::fileOperations::uncollatedFileOperation::lastModified
virtual time_t lastModified(const fileName &, const bool followLink=true) const
Return time of last file modification.
Definition: uncollatedFileOperation.C:282