OpenMS
File.h
Go to the documentation of this file.
1 // Copyright (c) 2002-present, OpenMS Inc. -- EKU Tuebingen, ETH Zurich, and FU Berlin
2 // SPDX-License-Identifier: BSD-3-Clause
3 //
4 // --------------------------------------------------------------------------
5 // $Maintainer: Chris Bielow $
6 // $Authors: Andreas Bertsch, Chris Bielow, Marc Sturm $
7 // --------------------------------------------------------------------------
8 
9 #pragma once
10 
12 #include <OpenMS/config.h>
13 #include <cstdlib>
14 #include <mutex>
15 
16 
17 namespace OpenMS
18 {
19  class Param;
20  class TOPPBase;
21 
27  class OPENMS_DLLAPI File
28  {
29 public:
30 
31  friend class TOPPBase;
32 
38  class OPENMS_DLLAPI TempDir
39  {
40  public:
41 
44  TempDir(bool keep_dir = false);
45 
48 
50  TempDir(const TempDir&) = delete;
51  TempDir& operator=(const TempDir&) = delete;
52  TempDir(TempDir&&) = delete;
53  TempDir& operator=(TempDir&&) = delete;
54 
56  const String& getPath() const;
57 
58  private:
60  bool keep_dir_;
61  };
62 
68 
70  static bool exists(const String& file);
71 
73  static bool empty(const String& file);
74 
76  static bool executable(const String& file);
77 
79  static UInt64 fileSize(const String& file);
80 
95  static bool rename(const String& from, const String& to, bool overwrite_existing = true, bool verbose = true);
96 
113  enum class CopyOptions {OVERWRITE,SKIP,CANCEL};
114  static bool copyDirRecursively(const QString &from_dir, const QString &to_dir, File::CopyOptions option = CopyOptions::OVERWRITE);
115 
117  static bool copy(const String& from, const String& to);
118 
124  static bool remove(const String& file);
125 
127  static bool removeDirRecursively(const String& dir_name);
128 
130  static bool removeDir(const QString& dir_name);
131 
134  static bool makeDir(const String& dir_name);
135 
137  static String absolutePath(const String& file);
138 
142  static String basename(const String& file);
143 
148  static String path(const String& file);
149 
151  static bool readable(const String& file);
152 
154  static bool writable(const String& file);
155 
157  static bool isDirectory(const String& path);
158 
169  static String find(const String& filename, StringList directories = StringList());
170 
177  static bool fileList(const String& dir, const String& file_pattern, StringList& output, bool full_path = false);
178 
195  static String findDoc(const String& filename);
196 
203  static String getUniqueName(bool include_hostname = true);
204 
207 
210 
217 
224 
231 
235  static String findDatabase(const String& db_name);
236 
247  static StringList getPathLocations(const String& path = std::getenv("PATH"));
248 
262  static bool findExecutable(OpenMS::String& exe_filename);
263 
270  static String findSiblingTOPPExecutable(const String& toolName);
271 
288  static String getTemporaryFile(const String& alternative_file = "");
289 
290 
292  {
293  MATCH = 0, // Everything matches perfectly
294  ORDER_MISMATCH = 1, // Same set of files but in wrong order
295  SET_MISMATCH = 2 // Different sets of files (including size mismatch)
296  };
297 
314  const StringList& sl2,
315  bool basename = true,
316  bool ignore_extension = true);
317 
325  static void download(const std::string& url, const std::string& download_folder);
326 
327 private:
328 
331 
333  static bool isOpenMSDataPath_(const String& path);
334 
335 #ifdef OPENMS_WINDOWSPLATFORM
346  static StringList executableExtensions_(const String& ext = std::getenv("PATHEXT"));
347 #endif
348 
353  {
354  public:
355  TemporaryFiles_(const TemporaryFiles_&) = delete; // copy is forbidden
360 
362  private:
364  std::mutex mtx_;
365  };
366 
367 
370  };
371 }
372 
Class representing a temporary directory.
Definition: File.h:39
TempDir & operator=(TempDir &&)=delete
TempDir & operator=(const TempDir &)=delete
String temp_dir_
Definition: File.h:59
~TempDir()
Destroy temporary folder (can be prohibited in Constructor)
TempDir(bool keep_dir=false)
TempDir(const TempDir &)=delete
delete all means to copy or move a TempDir
TempDir(TempDir &&)=delete
const String & getPath() const
Return path to temporary folder.
bool keep_dir_
Definition: File.h:60
Internal helper class, which holds temporary filenames and deletes these files at program exit.
Definition: File.h:353
StringList filenames_
Definition: File.h:363
String newFile()
create a new filename and queue internally for deletion
TemporaryFiles_(const TemporaryFiles_ &)=delete
std::mutex mtx_
Definition: File.h:364
TemporaryFiles_ & operator=(const TemporaryFiles_ &)=delete
Basic file handling operations.
Definition: File.h:28
static bool removeDirRecursively(const String &dir_name)
Removes the subdirectories of the specified directory (absolute path). Returns true if successful.
static String getOpenMSHomePath()
Returns the OpenMS home path (environment variable overwrites the default home path)
static bool exists(const String &file)
Method used to test if a file exists.
static bool copyDirRecursively(const QString &from_dir, const QString &to_dir, File::CopyOptions option=CopyOptions::OVERWRITE)
static String getExecutablePath()
static bool fileList(const String &dir, const String &file_pattern, StringList &output, bool full_path=false)
Retrieves a list of files matching file_pattern in directory dir (returns filenames without paths unl...
static bool executable(const String &file)
Method used to test if a file is executable.
static String getOpenMSDataPath()
Returns the OpenMS data path (environment variable overwrites the default installation path)
CopyOptions
Copy directory recursively.
Definition: File.h:113
static Param getSystemParameterDefaults_()
get defaults for the system's Temp-path, user home directory etc.
static String findDoc(const String &filename)
Resolves a partial file name to a documentation file in the doc-folder.
static String path(const String &file)
static String getUserDirectory()
static String findSiblingTOPPExecutable(const String &toolName)
Searches for an executable with the given name.
static String absolutePath(const String &file)
Replaces the relative path in the argument with the absolute path.
static bool copy(const String &from, const String &to)
Copy a file (if it exists). Returns true if successful.
static String basename(const String &file)
static bool makeDir(const String &dir_name)
static String getUniqueName(bool include_hostname=true)
Returns a string, consisting of date, time, hostname, process id, and a incrementing number....
static MatchingFileListsStatus validateMatchingFileNames(const StringList &sl1, const StringList &sl2, bool basename=true, bool ignore_extension=true)
Helper function to test if filenames provided in two StringLists match.
static bool writable(const String &file)
Return true if the file is writable.
static UInt64 fileSize(const String &file)
The filesize in bytes (or -1 on error, e.g. if the file does not exist)
static bool remove(const String &file)
Removes a file (if it exists).
static String getTemporaryFile(const String &alternative_file="")
Obtain a temporary filename, ensuring automatic deletion upon exit.
static String find(const String &filename, StringList directories=StringList())
Looks up the location of the file filename.
MatchingFileListsStatus
Definition: File.h:292
static String getTempDirectory()
static String findDatabase(const String &db_name)
static StringList getPathLocations(const String &path=std::getenv("PATH"))
Extract list of directories from a concatenated string (usually $PATH).
static bool findExecutable(OpenMS::String &exe_filename)
Searches for an executable with the given name (similar to where (Windows) or which (Linux/MacOS)
static bool readable(const String &file)
Return true if the file exists and is readable.
static bool isOpenMSDataPath_(const String &path)
Check if the given path is a valid OPENMS_DATA_PATH.
static void download(const std::string &url, const std::string &download_folder)
Download file from given URL into a download folder. Returns when done.
static Param getSystemParameters()
static TemporaryFiles_ temporary_files_
private list of temporary filenames, which are deleted upon program exit
Definition: File.h:369
static bool isDirectory(const String &path)
Return true if the given path specifies a directory.
static bool removeDir(const QString &dir_name)
Removes the directory and all subdirectories (absolute path).
static bool empty(const String &file)
Return true if the file does not exist or the file is empty.
static bool rename(const String &from, const String &to, bool overwrite_existing=true, bool verbose=true)
Rename a file.
Management and storage of parameters / INI files.
Definition: Param.h:44
A more convenient string class.
Definition: String.h:34
Base class for TOPP applications.
Definition: TOPPBase.h:122
uint64_t UInt64
Unsigned integer type (64bit)
Definition: Types.h:47
std::vector< String > StringList
Vector of String.
Definition: ListUtils.h:44
int verbose
Verbosity level ( "-v" is 1 and "-V" is 2 )
Main OpenMS namespace.
Definition: openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19