Refactor #5580: Add new file&directory apis into FileUtils and test cases

Please input internally functions into `private` or `protected`.