package eu.tpmusielak.securephoto.tools; import android.os.Environment; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Comparator; import java.util.Date; /** * Created by IntelliJ IDEA. * User: Tomasz P. Musielak * Date: 27.11.11 * Time: 16:26 */ public class FileHandling { public final static String dirPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + "/SecureCamera"; public static File getOutputFile(String extension) throws IOException { String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String name = "SCIMG_" + timeStamp; return getOutputFile(name, extension); } public static File getOutputFile(String name, String extension) throws IOException { if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { throw new IOException("External storage inaccessible"); } File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), "SecureCamera"); if (!mediaStorageDir.exists()) { if (!mediaStorageDir.mkdirs()) { return null; } } File mediaFile; mediaFile = new File(mediaStorageDir.getPath() + File.separator + name + "." + extension); return mediaFile; } public static File[] getFiles() { File dir = new File(dirPath); File[] files = dir.listFiles(); if (files != null) { Arrays.sort(files, new DescendingDateComparator()); } return files; } public static File[] getFiles(final String extension) { File dir = new File(dirPath); File[] files = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File file, String s) { return s.endsWith(extension); } }); if (files != null) { Arrays.sort(files, new DescendingDateComparator()); } return files; } public static String[] getFileNames(final String extension) { File dir = new File(dirPath); return dir.list(); } public static class DescendingDateComparator implements Comparator<File> { @Override public int compare(File f1, File f2) { Long f1Date = f1.lastModified(); Long f2Date = f2.lastModified(); return f2Date.compareTo(f1Date); } } }