+ boost::system::error_code err;
+#if defined(WIN32) && defined(UNICODE)
+ std::wstring name = Kernel_Utils::utf8_decode_s(_name);
+ boost::uintmax_t size = boofs::file_size(name.c_str(), err);
+#else
+ boost::uintmax_t size = boofs::file_size( _name, err );
+#endif
+ _error = err.message();
+
+ return !err ? (long) size : -1;
+}
+
+//================================================================================
+/*!
+ * \brief Check existence
+ */
+//================================================================================
+
+bool SMESH_File::exists()
+{
+ boost::system::error_code err;
+#if defined(WIN32) && defined(UNICODE)
+ std::wstring name = Kernel_Utils::utf8_decode_s(_name);
+ bool res = boofs::exists(name.c_str(), err);
+#else
+ bool res = boofs::exists(_name, err);
+#endif
+
+ _error = err.message();
+
+ return err ? false : res;
+}
+
+//================================================================================
+/*!
+ * \brief Check existence
+ */
+//================================================================================
+
+bool SMESH_File::isDirectory()
+{
+ boost::system::error_code err;
+#if defined(WIN32) && defined(UNICODE)
+ std::wstring name = Kernel_Utils::utf8_decode_s(_name);
+ bool res = boofs::is_directory(name.c_str(), err);
+#else
+ bool res = boofs::is_directory( _name, err );
+#endif
+ _error = err.message();
+
+ return err ? false : res;