ArmNN
 22.11
Filesystem.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 #if !defined(ARMNN_DISABLE_FILESYSTEM)
6 
8 #include "armnn/Exceptions.hpp"
9 
10 namespace armnnUtils
11 {
12 namespace Filesystem
13 {
14 
15 /**
16  * @brief Construct a temporary file name.
17  *
18  * Given a specified file name construct a path to that file in the
19  * system temporary directory. If the file already exists it is deleted. This
20  * could throw filesystem_error exceptions.
21  *
22  * @param fileName the file name required in the temporary directory.
23  * @return path consisting of system temporary directory and file name.
24  */
25 fs::path NamedTempFile(const char* fileName)
26 {
27  fs::path tmpDir = fs::temp_directory_path();
28  fs::path namedTempFile{tmpDir / fileName};
29  if (fs::exists(namedTempFile))
30  {
31  fs::remove(namedTempFile);
32  }
33  return namedTempFile;
34 }
35 
36 /**
37  * @brief Construct a temporary directory
38  *
39  * Given a specified directory name construct a path in the
40  * system temporary directory. If the directory already exists, it is deleted,
41  * otherwise create it. This could throw filesystem_error exceptions.
42  *
43  * @param path is the path required in the temporary directory.
44  * @return path consisting of system temporary directory.
45  */
46 std::string CreateDirectory(std::string path)
47 {
48  fs::path tmpDir = fs::temp_directory_path();
49  mode_t permissions = 0733;
50  int result = 0;
51 
52  std::string full_path = tmpDir.generic_string() + path;
53  if (fs::exists(full_path))
54  {
55  fs::remove_all(full_path);
56  }
57 
58 #if defined(_WIN32)
59  result = _mkdir(full_path.c_str()); // can be used on Windows
60  armnn::ConditionalThrow<armnn::RuntimeException>((result == 0), "Was unable to create temporary directory");
61 #else
62  result = mkdir(full_path.c_str(), permissions);
63  armnn::ConditionalThrow<armnn::RuntimeException>((result == 0), "Was unable to create temporary directory");
64 #endif
65 
66  return full_path + "/";
67 }
68 
69 FileContents ReadFileContentsIntoString(const std::string path) {
70  std::ifstream input_file(path);
71  armnn::ConditionalThrow<armnn::RuntimeException>((input_file.is_open()), "Could not read file contents");
72  return FileContents((std::istreambuf_iterator<char>(input_file)), std::istreambuf_iterator<char>());
73 }
74 
75 } // namespace armnnUtils
76 } // namespace Filesystem
77 
78 #endif // !defined(ARMNN_DISABLE_FILESYSTEM)
std::string FileContents
Definition: Filesystem.hpp:22
FileContents ReadFileContentsIntoString(const std::string path)
Definition: Filesystem.cpp:69
std::string CreateDirectory(std::string sPath)
Returns full path to temporary folder.
Definition: Filesystem.cpp:46
fs::path NamedTempFile(const char *fileName)
Returns a path to a file in the system temporary folder. If the file existed it will be deleted...
Definition: Filesystem.cpp:25