Belle II Software development
FileSystem::TemporaryFile Class Reference

Helper file to create a temporary file and ensure deletion if object goes out of scope. More...

#include <FileSystem.h>

Inheritance diagram for FileSystem::TemporaryFile:

Public Member Functions

 TemporaryFile (std::ios_base::openmode mode=std::ios_base::trunc|std::ios_base::out)
 construct a new temporary file
 
 TemporaryFile (const TemporaryFile &)=delete
 prevent assignment
 
 TemporaryFile (TemporaryFile &&)=delete
 and no move construction as basic_ios doesn't allow that
 
TemporaryFileoperator= (const TemporaryFile &)=delete
 prevent copy constructor
 
 ~TemporaryFile ()
 close file and delete on destruction
 
std::string getName () const
 get filename of the temporary file
 

Private Attributes

std::string m_filename
 filename of the temporary file
 

Detailed Description

Helper file to create a temporary file and ensure deletion if object goes out of scope.

Definition at line 128 of file FileSystem.h.

Constructor & Destructor Documentation

◆ TemporaryFile()

TemporaryFile ( std::ios_base::openmode mode = std::ios_base::trunc | std::ios_base::out)
explicit

construct a new temporary file

Definition at line 224 of file FileSystem.cc.

224 : std::fstream()
225{
226 char* temporaryFileName = strdup((std::filesystem::temp_directory_path() / "basf2_XXXXXX").c_str());
227 int fileDescriptor = mkstemp(temporaryFileName);
228 if (fileDescriptor == -1) {
229 B2ERROR("Cannot create temporary file: " << strerror(errno));
230 free(temporaryFileName);
231 return;
232 }
233 m_filename = std::string(temporaryFileName);
234 open(temporaryFileName, mode);
235 if (!is_open()) {
236 B2ERROR("Cannot open temporary file: " << strerror(errno));
237 }
238 free(temporaryFileName);
239 ::close(fileDescriptor);
240}
std::string m_filename
filename of the temporary file
Definition FileSystem.h:144

◆ ~TemporaryFile()

close file and delete on destruction

Definition at line 242 of file FileSystem.cc.

243{
244 close();
245 fs::remove(m_filename);
246}

Member Function Documentation

◆ getName()

std::string getName ( ) const
inline

get filename of the temporary file

Definition at line 141 of file FileSystem.h.

141{ return m_filename; }

Member Data Documentation

◆ m_filename

std::string m_filename
private

filename of the temporary file

Definition at line 144 of file FileSystem.h.


The documentation for this class was generated from the following files: