• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 /** @file file_ex.h
17 *
18 *  @brief Provides global file operation functions implemented in c_utils.
19 */
20 
21 /**
22 * @defgroup FileReadWrite
23 * @{
24 * @brief Provides interfaces for reading data from and writing data to files.
25 *
26 * You can use the interfaces to read data from a file, write data to a file,
27 * and search for the specified string.
28 */
29 
30 #ifndef UTILS_BASE_FILE_EX_H
31 #define UTILS_BASE_FILE_EX_H
32 
33 #include <string>
34 #include <vector>
35 #ifdef UTILS_CXX_RUST
36 #include "cxx.h"
37 #endif
38 
39 namespace OHOS {
40 #ifdef UTILS_CXX_RUST
41 bool RustLoadStringFromFile(const rust::String& filePath, rust::String& content);
42 bool RustLoadStringFromFd(int fd, rust::String& content);
43 bool RustLoadBufferFromFile(const rust::String& filePath, rust::vec<char>& content);
44 bool RustSaveBufferToFile(const rust::String& filePath, const rust::vec<char>& content, bool truncated);
45 bool RustSaveStringToFile(const rust::String& filePath, const rust::String& content, bool truncated);
46 bool RustSaveStringToFd(int fd, const rust::String& content);
47 bool RustFileExists(const rust::String& fileName);
48 bool RustStringExistsInFile(const rust::String& fileName, const rust::String& subStr, bool caseSensitive);
49 int  RustCountStrInFile(const rust::String& fileName, const rust::String& subStr, bool caseSensitive);
50 #endif
51 /**
52  * @ingroup FileReadWrite
53  * @brief Reads a string from a file.
54  *
55  * @param filePath Indicates the path of the target file.
56  * @param content Indicates the <b>std::string</b> object used to hold
57  * the data read.
58  * @return Returns <b>true</b> if the string is read successfully;
59  * returns <b>false</b> otherwise.
60  * @note The maximum file size is 32 MB.
61  */
62 bool LoadStringFromFile(const std::string& filePath, std::string& content);
63 
64 /**
65  * @ingroup FileReadWrite
66  * @brief Writes a string to a file.
67  *
68  * @param filePath Indicates the path of the target file.
69  * @param content Indicates the <b>std::string</b> object to write.
70  * @param truncated Indicates whether to truncate the original file.
71  * @return Returns <b>true</b> if the string is written successfully;
72  * returns <b>false</b> otherwise.
73  */
74 bool SaveStringToFile(const std::string& filePath, const std::string& content, bool truncated = true);
75 
76 /**
77  * @ingroup FileReadWrite
78  * @brief Reads a string from a file specified by its file descriptor (FD).
79  *
80  * @param fd Indicates the FD of the file to read.
81  * @param content Indicates the <b>std::string</b> object used to hold
82  * the data read.
83  * @return Returns <b>true</b> if the string is read successfully;
84  * returns <b>false</b> otherwise.
85  */
86 bool LoadStringFromFd(int fd, std::string& content);
87 
88 /**
89  * @ingroup FileReadWrite
90  * @brief Writes a string to a file specified by its FD.
91  *
92  * @param fd Indicates the FD of the file to write.
93  * @param content Indicates the <b>std::string</b> object to write.
94  * @return Returns <b>true</b> if the string is written successfully;
95  * returns <b>false</b> otherwise.
96  */
97 bool SaveStringToFd(int fd, const std::string& content);
98 
99 /**
100  * @ingroup FileReadWrite
101  * @brief Reads data as a vector from a file.
102  *
103  * @param filePath Indicates the path of the target file.
104  * @param content Indicates the <b>std::vector</b> object used to hold
105  * the data read.
106  * @return Returns <b>true</b> if the data is read successfully;
107  * returns <b>false</b> otherwise.
108  */
109 bool LoadBufferFromFile(const std::string& filePath, std::vector<char>& content);
110 
111 /**
112  * @ingroup FileReadWrite
113  * @brief Writes data of a vector to a file.
114  *
115  * @param filePath Indicates the path of the target file.
116  * @param content Indicates the <b>std::vector</b> object to write.
117  * @return Returns <b>true</b> if the data is written successfully;
118  * returns <b>false</b> otherwise.
119  */
120 bool SaveBufferToFile(const std::string& filePath, const std::vector<char>& content, bool truncated = true);
121 
122 /**
123  * @ingroup FileReadWrite
124  * @brief Checks whether a file exists.
125  *
126  * @param filePath Indicates the file to check.
127  * @return Returns <b>true</b> if the file exists; returns <b>false</b>
128  * if any error (e.g. Permission Denied) occurs.
129  */
130 bool FileExists(const std::string& fileName);
131 
132 /**
133  * @ingroup FileReadWrite
134  * @brief Checks whether a file contains the specified string.
135  *
136  * @param fileName Indicates the path of the target file.
137  * @param subStr Indicates the <b>std::string</b> object to check.
138  * @param caseSensitive Indicates whether the string is case-sensitive.
139  * @return Returns <b>true</b> if the file contains the specified string;
140  * returns <b>false</b> otherwise.
141  */
142 bool StringExistsInFile(const std::string& fileName, const std::string& subStr, bool caseSensitive = true);
143 
144 /**
145  * @ingroup FileReadWrite
146  * @brief Obtains the number of occurrences of the specified string in a file.
147 
148  *
149  * @param fileName Indicates the path of the target file.
150  * @param subStr Indicates the <b>std::string</b> object to search.
151  * @param caseSensitive Indicates whether the string is case-sensitive.
152  * @return Returns the number of occurrences of the string in the file;
153  * returns <b>0</b> if <b>subStr</b> is null.
154  */
155 int  CountStrInFile(const std::string& fileName, const std::string& subStr, bool caseSensitive = true);
156 }
157 
158 #endif
159 
160 /**@}*/
161