OpenMS
Loading...
Searching...
No Matches
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
17namespace OpenMS
18{
19 class Param;
20 class TOPPBase;
21
27 class OPENMS_DLLAPI File
28 {
29public:
34 class OPENMS_DLLAPI TempDir
35 {
36 public:
37
40 TempDir(bool keep_dir = false);
41
47 TempDir(const std::string& base_dir, bool keep_dir = false);
48
51
53 TempDir(const TempDir&) = delete;
54 TempDir& operator=(const TempDir&) = delete;
55 TempDir(TempDir&&) = delete;
57
59 const std::string& getPath() const;
60
61 private:
62 std::string temp_dir_;
64 };
65
70 static std::string getExecutablePath();
71
73 static bool exists(const std::string& file);
74
76 static bool empty(const std::string& file);
77
79 static bool executable(const std::string& file);
80
82 static UInt64 fileSize(const std::string& file);
83
98 static bool rename(const std::string& from, const std::string& to, bool overwrite_existing = true, bool verbose = true);
99
116 enum class CopyOptions {OVERWRITE,SKIP,CANCEL};
117 static bool copyDirRecursively(const std::string& from_dir, const std::string& to_dir, File::CopyOptions option = CopyOptions::OVERWRITE);
118
120 static bool copy(const std::string& from, const std::string& to);
121
127 static bool remove(const std::string& file);
128
130 static bool removeDirRecursively(const std::string& dir_name);
131
133 static bool removeDir(const std::string& dir_name);
134
137 static bool makeDir(const std::string& dir_name);
138
140 static std::string absolutePath(const std::string& file);
141
145 static std::string basename(const std::string& file);
146
152 static std::string stemName(const std::string& file);
153
158 static std::string extension(const std::string& file);
159
162 static StringList listDirectories(const std::string& dir);
163
168 static std::string path(const std::string& file);
169
171 static bool readable(const std::string& file);
172
174 static bool writable(const std::string& file);
175
177 static bool isDirectory(const std::string& path);
178
189 static std::string find(const std::string& filename, StringList directories = StringList());
190
197 static bool fileList(const std::string& dir, const std::string& file_pattern, StringList& output, bool full_path = false);
198
215 static std::string findDoc(const std::string& filename);
216
223 static std::string getUniqueName(bool include_hostname = true);
224
226 static std::string getOpenMSDataPath();
227
229 static std::string getOpenMSHomePath();
230
236 static std::string getTempDirectory();
237
243 static std::string getUserDirectory();
244
251
255 static std::string findDatabase(const std::string& db_name);
256
267 static StringList getPathLocations(const std::string& path = std::getenv("PATH"));
268
282 static bool findExecutable(std::string& exe_filename);
283
290 static std::string findSiblingTOPPExecutable(const std::string& toolName);
291
308 static std::string getTemporaryFile(const std::string& alternative_file = "");
309
310
312 {
313 MATCH = 0, // Everything matches perfectly
314 ORDER_MISMATCH = 1, // Same set of files but in wrong order
315 SET_MISMATCH = 2 // Different sets of files (including size mismatch)
316 };
317
334 const StringList& sl2,
335 bool basename = true,
336 bool ignore_extension = true);
337
338private:
339
342
344 static bool isOpenMSDataPath_(const std::string& path);
345
346#ifdef OPENMS_WINDOWSPLATFORM
357 static StringList executableExtensions_(const std::string& ext = std::getenv("PATHEXT"));
358#endif
359
364 {
365 public:
366 TemporaryFiles_(const TemporaryFiles_&) = delete; // copy is forbidden
370 std::string newFile();
371
373 private:
375 std::mutex mtx_;
376 };
377
378
381 };
382}
383
Class representing a temporary directory.
Definition File.h:35
TempDir(const std::string &base_dir, bool keep_dir=false)
~TempDir()
Destroy temporary folder (can be prohibited in Constructor)
const std::string & getPath() const
Return path to temporary folder.
TempDir(bool keep_dir=false)
TempDir(const TempDir &)=delete
delete all means to copy or move a TempDir
TempDir(TempDir &&)=delete
std::string temp_dir_
Definition File.h:62
TempDir & operator=(const TempDir &)=delete
bool keep_dir_
Definition File.h:63
TempDir & operator=(TempDir &&)=delete
Internal helper class, which holds temporary filenames and deletes these files at program exit.
Definition File.h:364
StringList filenames_
Definition File.h:374
TemporaryFiles_ & operator=(const TemporaryFiles_ &)=delete
std::string newFile()
create a new filename and queue internally for deletion
TemporaryFiles_(const TemporaryFiles_ &)=delete
std::mutex mtx_
Definition File.h:375
Basic file handling operations.
Definition File.h:28
static std::string findDoc(const std::string &filename)
Resolves a partial file name to a documentation file in the doc-folder.
static std::string findSiblingTOPPExecutable(const std::string &toolName)
Searches for an executable with the given name.
static std::string find(const std::string &filename, StringList directories=StringList())
Looks up the location of the file filename.
static bool executable(const std::string &file)
Method used to test if a file is executable.
static StringList getPathLocations(const std::string &path=std::getenv("PATH"))
Extract list of directories from a concatenated string (usually $PATH).
static bool removeDir(const std::string &dir_name)
Removes a directory and all its contents (absolute path). Returns true if successful.
static std::string getUserDirectory()
static bool writable(const std::string &file)
Return true if the file is writable.
CopyOptions
Copy directory recursively.
Definition File.h:116
static Param getSystemParameterDefaults_()
get defaults for the system's Temp-path, user home directory etc.
static std::string findDatabase(const std::string &db_name)
static StringList listDirectories(const std::string &dir)
static bool remove(const std::string &file)
Removes a file (if it exists).
static std::string getTempDirectory()
static std::string basename(const std::string &file)
static bool fileList(const std::string &dir, const std::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 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 empty(const std::string &file)
Return true if the file does not exist or the file is empty.
static bool readable(const std::string &file)
Return true if the file exists and is readable.
static std::string extension(const std::string &file)
static UInt64 fileSize(const std::string &file)
The filesize in bytes (or -1 on error, e.g. if the file does not exist)
static bool makeDir(const std::string &dir_name)
static std::string getTemporaryFile(const std::string &alternative_file="")
Obtain a temporary filename, ensuring automatic deletion upon exit.
static std::string absolutePath(const std::string &file)
Replaces the relative path in the argument with the absolute path.
static std::string getUniqueName(bool include_hostname=true)
Returns a string, consisting of date, time, hostname, process id, and a incrementing number....
static std::string path(const std::string &file)
static bool findExecutable(std::string &exe_filename)
Searches for an executable with the given name (similar to where (Windows) or which (Linux/MacOS)
static bool isOpenMSDataPath_(const std::string &path)
Check if the given path is a valid OPENMS_DATA_PATH.
MatchingFileListsStatus
Definition File.h:312
static bool removeDirRecursively(const std::string &dir_name)
Removes a directory and all its contents recursively (absolute path). Returns true if successful.
static std::string stemName(const std::string &file)
static std::string getExecutablePath()
static bool copyDirRecursively(const std::string &from_dir, const std::string &to_dir, File::CopyOptions option=CopyOptions::OVERWRITE)
static bool exists(const std::string &file)
Method used to test if a file exists.
static bool copy(const std::string &from, const std::string &to)
Copy a file (if it exists). Returns true if successful.
static std::string getOpenMSDataPath()
Returns the OpenMS data path (environment variable overwrites the default installation path)
static std::string getOpenMSHomePath()
Returns the OpenMS home path (environment variable overwrites the default home path)
static Param getSystemParameters()
static TemporaryFiles_ temporary_files_
private list of temporary filenames, which are deleted upon program exit
Definition File.h:380
static bool isDirectory(const std::string &path)
Return true if the given path specifies a directory.
static bool rename(const std::string &from, const std::string &to, bool overwrite_existing=true, bool verbose=true)
Rename a file.
Management and storage of parameters / INI files.
Definition Param.h:46
uint64_t UInt64
Unsigned integer type (64bit)
Definition Types.h:47
std::vector< std::string > StringList
Vector of String.
Definition ListUtils.h:44
Main OpenMS namespace.
Definition openswathalgo/include/OpenMS/OPENSWATHALGO/DATAACCESS/ISpectrumAccess.h:19