/*
* This file is part of andExplorer, android.ovhoo.com
* Copyright (C) 2007 Mohamed ZALIM
*
* andExplorer is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* andExplorer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
//package com.ovhoo.android.file;
import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import android.net.Uri;
/**
* Adaptation of the class File to add some usefull functions
* @author mzalim
*
*/
public class FileInterface{
public static enum fileSizeUnit {FILE_SIZE_BITS, FILE_SIZE_BYTES, FILE_SIZE_KIB, FILE_SIZE_MIB, FILE_SIZE_GIB, FILE_SIZE_TIB};
private File file;
public FileInterface(File file) {
this.file = file;
}
public FileInterface(String path) {
this.file = new File(path);
}
public String getParentDir(){
String _parent = this.file.getParent();
if (_parent == null){
return "/";
}else{
return _parent;
}
}
public ArrayList ls(){
if (this.file.isDirectory()){
ArrayList _retour = new ArrayList();
java.io.File _files[] = this.file.listFiles();
for(int _index=0; _index < _files.length; _index ++){
_retour.add(new FileInterface(_files[_index]));
}
return _retour;
}
else{
return null;
}
}
public ArrayList ls(FilenameFilter filter){
if (this.file.isDirectory()){
ArrayList _retour = new ArrayList();
java.io.File _files[] = this.file.listFiles(filter);
for(int _index=0; _index < _files.length; _index ++){
_retour.add(new FileInterface(_files[_index]));
}
return _retour;
}
else{
return null;
}
}
/**
* Returns the file size in human readable units
* Defaut unit is in Bytes
* @return file size as String
*/
public String getFileSize(fileSizeUnit unit){
long _size = this.file.length();
if (unit == null){
return _size + " Bytes";
}
switch(unit){
case FILE_SIZE_BITS : return _size*8 + " Bits";
case FILE_SIZE_KIB : return _size/1024 + " KIB";
case FILE_SIZE_MIB : return _size/1048576 + " MIB";
case FILE_SIZE_GIB : return _size/1073741824 + " GIB";
default: return _size + " Bytes";
}
}
/**
* Returns the file size in human readable units
* calculate the best unit to use
*/
public String getFileSize(){
long _size = this.file.length();
if (_size>2073741824){
return _size/1073741824 + " GIB";
}
else if (_size>10485760){
return _size/1048576 + " MIB";
}
else if (_size>10240){
return _size/1024 + " KIB";
}
else if (_size>10){
return _size + " Bytes";
}
else{
return _size*8 + " Bits";
}
}
public String getName(){
return this.file.getName();
}
public boolean isDirectory(){
return this.file.isDirectory();
}
public String getPath(){
return this.file.getPath();
}
public String getAbsolutePath(){
return this.file.getAbsolutePath();
}
public boolean mkdirs(){
return this.file.mkdirs();
}
public boolean renameTo(String name) {
File _file= new File(this.getParentDir() + "/" + name);
return this.file.renameTo(_file);
}
public boolean delete() {
return this.file.delete();
}
public Uri getUri() {
return Uri.parse("file://"+ this.file.getAbsolutePath());
}
public boolean equals(Object obj){
if (obj instanceof FileInterface){
return this.file.equals(((FileInterface)obj).file);
}
else{
return false;
}
}
public File getFile() {
return this.file;
}
}