package greendrm.editor; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import android.util.Log; public class EditorFile implements IEditorFile { private final static boolean DEBUG = true; private final static String TAG = "EditorFile"; protected static File baseDir = null; public static void setBaseDir(File dir) { baseDir = dir; } public File getBaseDir() { return baseDir; } public void mkDir(String filename) { if (filename == null) return; File file = new File(baseDir, filename); if (DEBUG) Log.d(TAG, "mkDir ( " + file.getPath() + " )"); if (file.exists() || file.mkdir()) { baseDir = file; } else { Log.e(TAG, "Can not make directory(" + filename + ")"); } } public void createFile(String filename) { File file = new File(baseDir, filename); try { file.createNewFile(); if (DEBUG) Log.d(TAG, "createFile( " + file.getName() + " )"); } catch (IOException e) { Log.e(TAG, "Can not create file", e); } } public void deleteFile(String filename) { if (filename == null) return; File file = new File(baseDir, filename); if (DEBUG) Log.d(TAG, "deleteFile( " + file.getPath() + " )"); if (file.delete() == false) { if (DEBUG) Log.d(TAG, "failed to delete file"); } } public void saveFile(String filename, String data) { if (filename == null) return; File file = new File(baseDir, filename); if (DEBUG) Log.d(TAG, "saveFile : " + file.getPath()); if (file.exists() && file.canWrite()) { FileOutputStream fos = null; try { fos = new FileOutputStream(file); fos.write(data.getBytes()); } catch (IOException e) { Log.e(TAG, "saveFile error"); } finally { if (fos != null) { try { fos.flush(); fos.close(); } catch (IOException e) { } } } } else { Log.d(TAG, "saveFile file is not exits or writable"); } } public String loadFile(String filename) { if (filename == null) return null; File file = new File(baseDir, filename); byte[] reader = null; FileInputStream fis = null; if (DEBUG) Log.d(TAG, "loadFile : " + file.getPath()); if (file.exists()) { try { fis = new FileInputStream(file); reader = new byte[fis.available()]; if(DEBUG) Log.d(TAG, "fis.available " + fis.available()); while (fis.read(reader) != -1 && fis.available() > 0) {} } catch (IOException e) { Log.e(TAG, "loadFile error"); } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { } } } } else { Log.w(TAG, "loadFile file is not existed"); } if (reader != null) { return new String(reader); } else { if (DEBUG) Log.d(TAG, "loadFile returned null"); return null; } } public String parseFileName(String fullPath) { String[] tmps = fullPath.split("\\/"); return tmps[tmps.length-1]; } public String parseFileNameNoExt(String filename) { if (filename != null) { String[] tmps = filename.split("\\."); return tmps[0]; } return null; } public ArrayList<String> retreiveFiles(ArrayList<String> items) { File[] fs = baseDir.listFiles(); items.clear(); for (int i = fs.length - 1; i >= 0; i--) { items.add(fs[i].getPath()); } return items; } }