com.android.repository.io
Interface FileOp

All Known Implementing Classes:
FileOpImpl, MockFileOp

public interface FileOp

Wraps some common File operations on files and folders.

This makes it possible to override/mock/stub some file operations in unit tests.


Field Summary
static java.io.File[] EMPTY_FILE_ARRAY
           
 
Method Summary
 boolean canExecute(java.io.File file)
           
 boolean canWrite(java.io.File file)
          Invokes File.canWrite() on the given file.
 void copyFile(java.io.File source, java.io.File dest)
          Copies a binary file.
 boolean createNewFile(java.io.File file)
          Creates a new file.
 boolean delete(java.io.File file)
          Invokes File.delete() on the given file.
 void deleteFileOrFolder(java.io.File fileOrFolder)
          Helper to delete a file or a directory.
 void deleteOnExit(java.io.File file)
           
 java.io.File ensureRealFile(java.io.File in)
          If in is an in-memory file, write it out as a proper file and return it.
 boolean exists(java.io.File file)
          Invokes File.exists() on the given file.
 boolean isDirectory(java.io.File file)
          Invokes File.isDirectory() on the given file.
 boolean isFile(java.io.File file)
          Invokes File.isFile() on the given file.
 boolean isSameFile(java.io.File file1, java.io.File file2)
          Checks whether 2 binary files are the same.
 boolean isWindows()
          Returns true if we're on windows, false otherwise.
 long lastModified(java.io.File file)
          Returns the lastModified attribute of the file.
 long length(java.io.File file)
          Invokes File.length() on the given file.
 java.lang.String[] list(java.io.File folder, java.io.FilenameFilter filenameFilter)
           
 java.io.File[] listFiles(java.io.File file)
          Invokes File.listFiles() on the given file.
 java.io.File[] listFiles(java.io.File folder, java.io.FilenameFilter filenameFilter)
           
 java.util.Properties loadProperties(java.io.File file)
          Load Properties from a file.
 boolean mkdirs(java.io.File file)
          Invokes File.mkdirs() on the given file.
 java.io.InputStream newFileInputStream(java.io.File file)
          Creates a new InputStream for the given file.
 java.io.OutputStream newFileOutputStream(java.io.File file)
          Creates a new OutputStream for the given file.
 boolean renameTo(java.io.File oldDir, java.io.File newDir)
          Invokes File.renameTo(File) on the given files.
 void saveProperties(java.io.File file, java.util.Properties props, java.lang.String comments)
          Saves (write, store) the given Properties into the given File.
 void setExecutablePermission(java.io.File file)
          Sets the executable Unix permission (+x) on a file or folder.
 void setReadOnly(java.io.File file)
          Sets the file or directory as read-only.
 java.lang.String toString(java.io.File f, java.nio.charset.Charset c)
           
 

Field Detail

EMPTY_FILE_ARRAY

static final java.io.File[] EMPTY_FILE_ARRAY
Method Detail

deleteFileOrFolder

void deleteFileOrFolder(@NonNull
                        java.io.File fileOrFolder)
Helper to delete a file or a directory. For a directory, recursively deletes all of its content. Files that cannot be deleted right away are marked for deletion on exit. It's ok for the file or folder to not exist at all.


setExecutablePermission

void setExecutablePermission(@NonNull
                             java.io.File file)
                             throws java.io.IOException
Sets the executable Unix permission (+x) on a file or folder.

This attempts to use File#setExecutable through reflection if it's available. If this is not available, this invokes a chmod exec instead, so there is no guarantee of it being fast.

Caller must make sure to not invoke this under Windows.

Parameters:
file - The file to set permissions on.
Throws:
java.io.IOException - If an I/O error occurs

setReadOnly

void setReadOnly(@NonNull
                 java.io.File file)
Sets the file or directory as read-only.

Parameters:
file - The file or directory to set permissions on.

copyFile

void copyFile(@NonNull
              java.io.File source,
              @NonNull
              java.io.File dest)
              throws java.io.IOException
Copies a binary file.

Parameters:
source - the source file to copy.
dest - the destination file to write.
Throws:
java.io.FileNotFoundException - if the source file doesn't exist.
java.io.IOException - if there's a problem reading or writing the file.

isSameFile

boolean isSameFile(@NonNull
                   java.io.File file1,
                   @NonNull
                   java.io.File file2)
                   throws java.io.IOException
Checks whether 2 binary files are the same.

Parameters:
file1 - the source file to copy
file2 - the destination file to write
Throws:
java.io.FileNotFoundException - if the source files don't exist.
java.io.IOException - if there's a problem reading the files.

exists

boolean exists(@NonNull
               java.io.File file)
Invokes File.exists() on the given file.


isFile

boolean isFile(@NonNull
               java.io.File file)
Invokes File.isFile() on the given file.


isDirectory

boolean isDirectory(@NonNull
                    java.io.File file)
Invokes File.isDirectory() on the given file.


canWrite

boolean canWrite(@NonNull
                 java.io.File file)
Invokes File.canWrite() on the given file.


length

long length(@NonNull
            java.io.File file)
Invokes File.length() on the given file.


delete

boolean delete(@NonNull
               java.io.File file)
Invokes File.delete() on the given file. Note: for a recursive folder version, consider deleteFileOrFolder(File).


mkdirs

boolean mkdirs(@NonNull
               java.io.File file)
Invokes File.mkdirs() on the given file.


listFiles

@NonNull
java.io.File[] listFiles(@NonNull
                                 java.io.File file)
Invokes File.listFiles() on the given file. Contrary to the Java API, this returns an empty array instead of null when the directory does not exist.


renameTo

boolean renameTo(@NonNull
                 java.io.File oldDir,
                 @NonNull
                 java.io.File newDir)
Invokes File.renameTo(File) on the given files.


newFileOutputStream

@NonNull
java.io.OutputStream newFileOutputStream(@NonNull
                                                 java.io.File file)
                                         throws java.io.FileNotFoundException
Creates a new OutputStream for the given file.

Throws:
java.io.FileNotFoundException

newFileInputStream

@NonNull
java.io.InputStream newFileInputStream(@NonNull
                                               java.io.File file)
                                       throws java.io.FileNotFoundException
Creates a new InputStream for the given file.

Throws:
java.io.FileNotFoundException

loadProperties

@NonNull
java.util.Properties loadProperties(@NonNull
                                            java.io.File file)
Load Properties from a file. Returns an empty property set on error.

Parameters:
file - A non-null file to load from. File may not exist.
Returns:
A new Properties with the properties loaded from the file, or an empty property set in case of error.

saveProperties

void saveProperties(@NonNull
                    java.io.File file,
                    @NonNull
                    java.util.Properties props,
                    @NonNull
                    java.lang.String comments)
                    throws java.io.IOException
Saves (write, store) the given Properties into the given File.

Parameters:
file - A non-null file to write to.
props - The properties to write.
comments - A non-null description of the properly list, written in the file.
Throws:
java.io.IOException - if the write operation failed.

lastModified

long lastModified(@NonNull
                  java.io.File file)
Returns the lastModified attribute of the file.

Parameters:
file - The non-null file of which to retrieve the lastModified attribute.
Returns:
The last-modified attribute of the file, in milliseconds since The Epoch.
See Also:
File.lastModified()

createNewFile

boolean createNewFile(@NonNull
                      java.io.File file)
                      throws java.io.IOException
Creates a new file. See File.createNewFile().

Throws:
java.io.IOException

isWindows

boolean isWindows()
Returns true if we're on windows, false otherwise.


canExecute

boolean canExecute(@NonNull
                   java.io.File file)
See Also:
File.canExecute()

ensureRealFile

java.io.File ensureRealFile(@NonNull
                            java.io.File in)
                            throws java.io.IOException
If in is an in-memory file, write it out as a proper file and return it. Otherwise just return in.

Throws:
java.io.IOException

toString

@NonNull
java.lang.String toString(@NonNull
                                  java.io.File f,
                                  @NonNull
                                  java.nio.charset.Charset c)
                          throws java.io.IOException
Throws:
java.io.IOException
See Also:
Files.toString(File, Charset)

list

@Nullable
java.lang.String[] list(@NonNull
                                 java.io.File folder,
                                 @Nullable
                                 java.io.FilenameFilter filenameFilter)
See Also:
File.list(FilenameFilter)

listFiles

@Nullable
java.io.File[] listFiles(@NonNull
                                  java.io.File folder,
                                  @Nullable
                                  java.io.FilenameFilter filenameFilter)
See Also:
File.listFiles(FilenameFilter)

deleteOnExit

void deleteOnExit(java.io.File file)
See Also:
File.deleteOnExit()