| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This file contains utility functions for dealing with the local | 5 // This file contains utility functions for dealing with the local |
| 6 // filesystem. | 6 // filesystem. |
| 7 | 7 |
| 8 #ifndef BASE_FILE_UTIL_H_ | 8 #ifndef BASE_FILE_UTIL_H_ |
| 9 #define BASE_FILE_UTIL_H_ | 9 #define BASE_FILE_UTIL_H_ |
| 10 | 10 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 BASE_EXPORT bool DeleteAfterReboot(const FilePath& path); | 80 BASE_EXPORT bool DeleteAfterReboot(const FilePath& path); |
| 81 #endif | 81 #endif |
| 82 | 82 |
| 83 // Moves the given path, whether it's a file or a directory. | 83 // Moves the given path, whether it's a file or a directory. |
| 84 // If a simple rename is not possible, such as in the case where the paths are | 84 // If a simple rename is not possible, such as in the case where the paths are |
| 85 // on different volumes, this will attempt to copy and delete. Returns | 85 // on different volumes, this will attempt to copy and delete. Returns |
| 86 // true for success. | 86 // true for success. |
| 87 // This function fails if either path contains traversal components ('..'). | 87 // This function fails if either path contains traversal components ('..'). |
| 88 BASE_EXPORT bool Move(const FilePath& from_path, const FilePath& to_path); | 88 BASE_EXPORT bool Move(const FilePath& from_path, const FilePath& to_path); |
| 89 | 89 |
| 90 // Same as Move but allows paths with traversal components. | |
| 91 // Use only with extreme care. | |
| 92 BASE_EXPORT bool MoveUnsafe(const FilePath& from_path, | |
| 93 const FilePath& to_path); | |
| 94 | |
| 95 // Renames file |from_path| to |to_path|. Both paths must be on the same | 90 // Renames file |from_path| to |to_path|. Both paths must be on the same |
| 96 // volume, or the function will fail. Destination file will be created | 91 // volume, or the function will fail. Destination file will be created |
| 97 // if it doesn't exist. Prefer this function over Move when dealing with | 92 // if it doesn't exist. Prefer this function over Move when dealing with |
| 98 // temporary files. On Windows it preserves attributes of the target file. | 93 // temporary files. On Windows it preserves attributes of the target file. |
| 99 // Returns true on success, leaving *error unchanged. | 94 // Returns true on success, leaving *error unchanged. |
| 100 // Returns false on failure and sets *error appropriately, if it is non-NULL. | 95 // Returns false on failure and sets *error appropriately, if it is non-NULL. |
| 101 BASE_EXPORT bool ReplaceFile(const FilePath& from_path, | 96 BASE_EXPORT bool ReplaceFile(const FilePath& from_path, |
| 102 const FilePath& to_path, | 97 const FilePath& to_path, |
| 103 PlatformFileError* error); | 98 PlatformFileError* error); |
| 104 | 99 |
| 105 } // namespace base | |
| 106 | |
| 107 // ----------------------------------------------------------------------------- | |
| 108 | |
| 109 namespace file_util { | |
| 110 | |
| 111 // Copies a single file. Use CopyDirectory to copy directories. | 100 // Copies a single file. Use CopyDirectory to copy directories. |
| 112 // This function fails if either path contains traversal components ('..'). | 101 // This function fails if either path contains traversal components ('..'). |
| 113 BASE_EXPORT bool CopyFile(const base::FilePath& from_path, | 102 BASE_EXPORT bool CopyFile(const FilePath& from_path, const FilePath& to_path); |
| 114 const base::FilePath& to_path); | |
| 115 | |
| 116 // Same as CopyFile but allows paths with traversal components. | |
| 117 // Use only with extreme care. | |
| 118 BASE_EXPORT bool CopyFileUnsafe(const base::FilePath& from_path, | |
| 119 const base::FilePath& to_path); | |
| 120 | 103 |
| 121 // Copies the given path, and optionally all subdirectories and their contents | 104 // Copies the given path, and optionally all subdirectories and their contents |
| 122 // as well. | 105 // as well. |
| 123 // | 106 // |
| 124 // If there are files existing under to_path, always overwrite. Returns true | 107 // If there are files existing under to_path, always overwrite. Returns true |
| 125 // if successful, false otherwise. Wildcards on the names are not supported. | 108 // if successful, false otherwise. Wildcards on the names are not supported. |
| 126 // | 109 // |
| 127 // If you only need to copy a file use CopyFile, it's faster. | 110 // If you only need to copy a file use CopyFile, it's faster. |
| 128 BASE_EXPORT bool CopyDirectory(const base::FilePath& from_path, | 111 BASE_EXPORT bool CopyDirectory(const FilePath& from_path, |
| 129 const base::FilePath& to_path, | 112 const FilePath& to_path, |
| 130 bool recursive); | 113 bool recursive); |
| 131 | 114 |
| 115 } // namespace base |
| 116 |
| 117 // ----------------------------------------------------------------------------- |
| 118 |
| 119 namespace file_util { |
| 120 |
| 132 // Returns true if the given path exists on the local filesystem, | 121 // Returns true if the given path exists on the local filesystem, |
| 133 // false otherwise. | 122 // false otherwise. |
| 134 BASE_EXPORT bool PathExists(const base::FilePath& path); | 123 BASE_EXPORT bool PathExists(const base::FilePath& path); |
| 135 | 124 |
| 136 // Returns true if the given path is writable by the user, false otherwise. | 125 // Returns true if the given path is writable by the user, false otherwise. |
| 137 BASE_EXPORT bool PathIsWritable(const base::FilePath& path); | 126 BASE_EXPORT bool PathIsWritable(const base::FilePath& path); |
| 138 | 127 |
| 139 // Returns true if the given path exists and is a directory, false otherwise. | 128 // Returns true if the given path exists and is a directory, false otherwise. |
| 140 BASE_EXPORT bool DirectoryExists(const base::FilePath& path); | 129 BASE_EXPORT bool DirectoryExists(const base::FilePath& path); |
| 141 | 130 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 // bits in |mode|. If |path| is symbolic link, |mode| is the permission of | 184 // bits in |mode|. If |path| is symbolic link, |mode| is the permission of |
| 196 // a file which the symlink points to. | 185 // a file which the symlink points to. |
| 197 BASE_EXPORT bool GetPosixFilePermissions(const base::FilePath& path, | 186 BASE_EXPORT bool GetPosixFilePermissions(const base::FilePath& path, |
| 198 int* mode); | 187 int* mode); |
| 199 // Sets the permission of the given |path|. If |path| is symbolic link, sets | 188 // Sets the permission of the given |path|. If |path| is symbolic link, sets |
| 200 // the permission of a file which the symlink points to. | 189 // the permission of a file which the symlink points to. |
| 201 BASE_EXPORT bool SetPosixFilePermissions(const base::FilePath& path, | 190 BASE_EXPORT bool SetPosixFilePermissions(const base::FilePath& path, |
| 202 int mode); | 191 int mode); |
| 203 #endif // defined(OS_POSIX) | 192 #endif // defined(OS_POSIX) |
| 204 | 193 |
| 205 #if defined(OS_WIN) | |
| 206 // Copy from_path to to_path recursively and then delete from_path recursively. | |
| 207 // Returns true if all operations succeed. | |
| 208 // This function simulates Move(), but unlike Move() it works across volumes. | |
| 209 // This fuction is not transactional. | |
| 210 BASE_EXPORT bool CopyAndDeleteDirectory(const base::FilePath& from_path, | |
| 211 const base::FilePath& to_path); | |
| 212 #endif // defined(OS_WIN) | |
| 213 | |
| 214 // Return true if the given directory is empty | 194 // Return true if the given directory is empty |
| 215 BASE_EXPORT bool IsDirectoryEmpty(const base::FilePath& dir_path); | 195 BASE_EXPORT bool IsDirectoryEmpty(const base::FilePath& dir_path); |
| 216 | 196 |
| 217 // Get the temporary directory provided by the system. | 197 // Get the temporary directory provided by the system. |
| 218 // WARNING: DON'T USE THIS. If you want to create a temporary file, use one of | 198 // WARNING: DON'T USE THIS. If you want to create a temporary file, use one of |
| 219 // the functions below. | 199 // the functions below. |
| 220 BASE_EXPORT bool GetTempDir(base::FilePath* path); | 200 BASE_EXPORT bool GetTempDir(base::FilePath* path); |
| 221 // Get a temporary directory for shared memory files. | 201 // Get a temporary directory for shared memory files. |
| 222 // Only useful on POSIX; redirects to GetTempDir() on Windows. | 202 // Only useful on POSIX; redirects to GetTempDir() on Windows. |
| 223 BASE_EXPORT bool GetShmemTempDir(base::FilePath* path, bool executable); | 203 BASE_EXPORT bool GetShmemTempDir(base::FilePath* path, bool executable); |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 447 }; | 427 }; |
| 448 | 428 |
| 449 // Attempts determine the FileSystemType for |path|. | 429 // Attempts determine the FileSystemType for |path|. |
| 450 // Returns false if |path| doesn't exist. | 430 // Returns false if |path| doesn't exist. |
| 451 BASE_EXPORT bool GetFileSystemType(const base::FilePath& path, | 431 BASE_EXPORT bool GetFileSystemType(const base::FilePath& path, |
| 452 FileSystemType* type); | 432 FileSystemType* type); |
| 453 #endif | 433 #endif |
| 454 | 434 |
| 455 } // namespace file_util | 435 } // namespace file_util |
| 456 | 436 |
| 437 // Internal -------------------------------------------------------------------- |
| 438 |
| 439 namespace base { |
| 440 namespace internal { |
| 441 |
| 442 // Same as Move but allows paths with traversal components. |
| 443 // Use only with extreme care. |
| 444 BASE_EXPORT bool MoveUnsafe(const FilePath& from_path, |
| 445 const FilePath& to_path); |
| 446 |
| 447 // Same as CopyFile but allows paths with traversal components. |
| 448 // Use only with extreme care. |
| 449 BASE_EXPORT bool CopyFileUnsafe(const FilePath& from_path, |
| 450 const FilePath& to_path); |
| 451 |
| 452 #if defined(OS_WIN) |
| 453 // Copy from_path to to_path recursively and then delete from_path recursively. |
| 454 // Returns true if all operations succeed. |
| 455 // This function simulates Move(), but unlike Move() it works across volumes. |
| 456 // This fuction is not transactional. |
| 457 BASE_EXPORT bool CopyAndDeleteDirectory(const FilePath& from_path, |
| 458 const FilePath& to_path); |
| 459 #endif // defined(OS_WIN) |
| 460 |
| 461 } // namespace internal |
| 462 } // namespace base |
| 463 |
| 457 #endif // BASE_FILE_UTIL_H_ | 464 #endif // BASE_FILE_UTIL_H_ |
| OLD | NEW |