com.android.sdklib.io
Class FileOp

java.lang.Object
  extended by com.android.sdklib.io.FileOp
All Implemented Interfaces:
IFileOp

public class FileOp
extends java.lang.Object
implements IFileOp

Wraps some common File operations on files and folders.

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


Constructor Summary
FileOp()
           
 
Method Summary
static java.io.File append(java.io.File base, java.lang.String... segments)
          Appends the given segments to the base file.
static java.io.File append(java.lang.String base, java.lang.String... segments)
          Appends the given segments to the base file.
 void copyFile(java.io.File source, java.io.File dest)
          Copies a binary 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.
 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.
 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.io.File[] listFiles(java.io.File file)
          Invokes File.listFiles() on the given file.
 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 oldFile, java.io.File newFile)
          Invokes File.renameTo(File) on the given files.
 boolean 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FileOp

public FileOp()
Method Detail

append

public static java.io.File append(@NonNull
                                  java.io.File base,
                                  @NonNull
                                  java.lang.String... segments)
Appends the given segments to the base file.

Parameters:
base - A base file, non-null.
segments - Individual folder or filename segments to append to the base file.
Returns:
A new file representing the concatenation of the base path with all the segments.

append

public static java.io.File append(@NonNull
                                  java.lang.String base,
                                  @NonNull
                                  java.lang.String... segments)
Appends the given segments to the base file.

Parameters:
base - A base file path, non-empty and non-null.
segments - Individual folder or filename segments to append to the base path.
Returns:
A new file representing the concatenation of the base path with all the segments.

deleteFileOrFolder

public 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. The argument can be null.

Specified by:
deleteFileOrFolder in interface IFileOp

setExecutablePermission

public 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.

Specified by:
setExecutablePermission in interface IFileOp
Parameters:
file - The file to set permissions on.
Throws:
java.io.IOException - If an I/O error occurs

setReadOnly

public void setReadOnly(@NonNull
                        java.io.File file)
Description copied from interface: IFileOp
Sets the file or directory as read-only.

Specified by:
setReadOnly in interface IFileOp
Parameters:
file - The file or directory to set permissions on.

copyFile

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

Specified by:
copyFile in interface IFileOp
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

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

Specified by:
isSameFile in interface IFileOp
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.

isFile

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

Specified by:
isFile in interface IFileOp

isDirectory

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

Specified by:
isDirectory in interface IFileOp

exists

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

Specified by:
exists in interface IFileOp

length

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

Specified by:
length in interface IFileOp

delete

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

Specified by:
delete in interface IFileOp

mkdirs

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

Specified by:
mkdirs in interface IFileOp

listFiles

@NonNull
public 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.

Specified by:
listFiles in interface IFileOp

renameTo

public boolean renameTo(@NonNull
                        java.io.File oldFile,
                        @NonNull
                        java.io.File newFile)
Invokes File.renameTo(File) on the given files.

Specified by:
renameTo in interface IFileOp

newFileOutputStream

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

Specified by:
newFileOutputStream in interface IFileOp
Throws:
java.io.FileNotFoundException

newFileInputStream

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

Specified by:
newFileInputStream in interface IFileOp
Throws:
java.io.FileNotFoundException

loadProperties

@NonNull
public java.util.Properties loadProperties(@NonNull
                                                   java.io.File file)
Description copied from interface: IFileOp
Load Properties from a file. Returns an empty property set on error.

Specified by:
loadProperties in interface IFileOp
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

public boolean saveProperties(@NonNull
                              java.io.File file,
                              @NonNull
                              java.util.Properties props,
                              @NonNull
                              java.lang.String comments)
Description copied from interface: IFileOp
Saves (write, store) the given Properties into the given File.

Specified by:
saveProperties in interface IFileOp
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.
Returns:
True if the properties could be saved, false otherwise.

lastModified

public long lastModified(@NonNull
                         java.io.File file)
Description copied from interface: IFileOp
Returns the lastModified attribute of the file.

Specified by:
lastModified in interface IFileOp
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()