23 BasicFileInfo::BasicFileInfo(
const std::string &path) :
28 m_file.exceptions(ios_base::failbit | ios_base::badbit);
62 m_file.open(m_path, (m_readOnly = readOnly) ? ios_base::in | ios_base::binary : ios_base::in | ios_base::out | ios_base::binary);
63 m_file.seekg(0, ios_base::end);
64 m_size =
static_cast<uint64
>(m_file.tellg());
65 m_file.seekg(0, ios_base::beg);
110 size_t lastSlash =
path.rfind(
'/');
111 size_t lastBackSlash =
path.rfind(
'\\');
112 size_t lastPoint = cutExtension ?
path.rfind(
'.') : string::npos;
113 size_t lastSeparator;
114 if(lastSlash == string::npos && lastBackSlash == string::npos) {
115 return (lastPoint == string::npos) ?
path :
path.substr(0, lastPoint);
116 }
else if(lastSlash == string::npos) {
117 lastSeparator = lastBackSlash;
118 }
else if(lastBackSlash == string::npos) {
119 lastSeparator = lastSlash;
121 lastSeparator = lastSlash > lastBackSlash ? lastSlash : lastBackSlash;
123 return (lastPoint != string::npos) ?
path.substr(lastSeparator + 1, lastPoint - lastSeparator - 1) :
path.substr(lastSeparator + 1);
133 return fileName(m_path, cutExtension);
143 size_t lastPoint =
path.rfind(
'.');
144 if(lastPoint == string::npos) {
147 return path.substr(lastPoint);
164 size_t lastPoint = fullPath.rfind(
'.');
165 return lastPoint != string::npos ? fullPath.substr(0, lastPoint) : fullPath;
181 size_t lastSlash =
path.rfind(
'/');
182 size_t lastBackSlash =
path.rfind(
'\\');
183 size_t lastSeparator;
184 if(lastSlash == string::npos && lastBackSlash == string::npos) {
186 }
else if(lastSlash == string::npos) {
187 lastSeparator = lastBackSlash;
188 }
else if(lastBackSlash == string::npos) {
189 lastSeparator = lastSlash;
191 lastSeparator = lastSlash > lastBackSlash ? lastSlash : lastBackSlash;
193 if(lastSeparator > 0) {
194 return path.substr(0, lastSeparator);