diff --git a/interfaces/kits/js/src/common/file_filter.h b/interfaces/kits/js/src/common/file_filter.h index 694b6f0d20f78718753955e42f1e80c5b942dfbd..902ecb0552a22fe6252899ec8fb14bb208575b2f 100644 --- a/interfaces/kits/js/src/common/file_filter.h +++ b/interfaces/kits/js/src/common/file_filter.h @@ -21,7 +21,8 @@ #include "parcel.h" namespace OHOS { -namespace DistributedFS { +namespace FileManagement { +namespace ModuleFileIO { class FileFilter : public Parcelable { public: FileFilter() = default; @@ -169,6 +170,7 @@ private: bool excludeMedia_ = false; bool hasFilter_ = false; }; -} // namespace DistributedFS +} // namespace ModuleFileIO +} // namespace FileManagement } // namespace OHOS #endif // FILE_FILTER_H \ No newline at end of file diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp index 963c7c7ab33a4b9a6aa2d6217790922e8dcf5271..84f0784198e1698073d47c798a67e920be9d3138 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.cpp @@ -50,7 +50,7 @@ static bool CheckSuffix(const vector &suffixs) return true; } -static bool GetFileFilterParam(const NVal &argv, OHOS::DistributedFS::FileFilter *filter) +static bool GetFileFilterParam(const NVal &argv, FileFilter *filter) { bool ret = false; if (argv.HasProp("suffix") && !argv.GetProp("suffix").TypeIs(napi_undefined)) { @@ -80,7 +80,7 @@ static bool GetFileFilterParam(const NVal &argv, OHOS::DistributedFS::FileFilter filter->SetDisplayName(displayNames); } if (argv.HasProp("fileSizeOver") && !argv.GetProp("fileSizeOver").TypeIs(napi_undefined)) { - int64_t fileSizeOver = 0; + int64_t fileSizeOver = -1; tie(ret, fileSizeOver) = argv.GetProp("fileSizeOver").ToInt64(); if (!ret || fileSizeOver < 0) { HILOGE("Failed to get fileSizeOver prop."); @@ -89,7 +89,7 @@ static bool GetFileFilterParam(const NVal &argv, OHOS::DistributedFS::FileFilter filter->SetFileSizeOver(fileSizeOver); } if (argv.HasProp("lastModifiedAfter") && !argv.GetProp("lastModifiedAfter").TypeIs(napi_undefined)) { - double lastModifiedAfter = 0; + double lastModifiedAfter = -1; tie(ret, lastModifiedAfter) = argv.GetProp("lastModifiedAfter").ToDouble(); if (!ret || lastModifiedAfter < 0) { HILOGE("Failed to get lastModifiedAfter prop."); @@ -180,6 +180,9 @@ static bool FilterDisplayname(const vector &displaynames, const struct d static bool FilterFilesizeOver(const int64_t fFileSizeOver, const struct dirent &filename) { + if (fFileSizeOver < 0) { + return true; + } struct stat info; string stPath = (g_optionArgs.path + '/' + string(filename.d_name)); int32_t res = stat(stPath.c_str(), &info); @@ -187,14 +190,17 @@ static bool FilterFilesizeOver(const int64_t fFileSizeOver, const struct dirent HILOGE("Failed to stat file."); return false; } - if (fFileSizeOver > info.st_size) { - return false; + if (info.st_size > fFileSizeOver) { + return true; } - return true; + return false; } static bool FilterLastModifyTime(const double lastModifiedAfter, const struct dirent &filename) { + if (lastModifiedAfter < 0) { + return true; + } struct stat info; string stPath = g_optionArgs.path + '/' + string(filename.d_name); int32_t res = stat(stPath.c_str(), &info); @@ -202,10 +208,10 @@ static bool FilterLastModifyTime(const double lastModifiedAfter, const struct di HILOGE("Failed to stat file."); return false; } - if (lastModifiedAfter > static_cast(info.st_mtime)) { - return false; + if (static_cast(info.st_mtime) > lastModifiedAfter) { + return true; } - return true; + return false; } static bool FilterResult(const struct dirent &filename) @@ -219,11 +225,11 @@ static bool FilterResult(const struct dirent &filename) return false; } int64_t fFileSizeOver = g_optionArgs.filter.GetFileSizeOver(); - if (!FilterFilesizeOver(fFileSizeOver, filename) && fFileSizeOver > 0) { + if (!FilterFilesizeOver(fFileSizeOver, filename)) { return false; } double fLastModifiedAfter = g_optionArgs.filter.GetLastModifiedAfter(); - if (!FilterLastModifyTime(fLastModifiedAfter, filename) && fLastModifiedAfter > 0) { + if (!FilterLastModifyTime(fLastModifiedAfter, filename)) { return false; } g_optionArgs.countNum++; diff --git a/interfaces/kits/js/src/mod_fs/properties/listfile.h b/interfaces/kits/js/src/mod_fs/properties/listfile.h index 2c5d067bbfc33dd7f23f28be31866287b74e5290..35615e50c6b13050aadd28085b03ee653dd1e548 100755 --- a/interfaces/kits/js/src/mod_fs/properties/listfile.h +++ b/interfaces/kits/js/src/mod_fs/properties/listfile.h @@ -39,15 +39,17 @@ struct NameListArg { int direntNum = 0; }; +constexpr int INVALID_SIZE = -1; +constexpr int INVALID_MODIFY_AFTER = -1; struct OptionArgs { - OHOS::DistributedFS::FileFilter filter = { {}, {}, {}, 0, 0, false, false }; + FileFilter filter = { {}, {}, {}, INVALID_SIZE, INVALID_MODIFY_AFTER, false, false }; int listNum = 0; int countNum = 0; bool recursion = false; std::string path = ""; void Clear() { - filter = { {}, {}, {}, 0, 0, false, false }; + filter = { {}, {}, {}, INVALID_SIZE, INVALID_MODIFY_AFTER, false, false }; listNum = 0; countNum = 0; recursion = false;