package com.stardust.scriptdroid.script; import android.os.Environment; import com.stardust.pio.PFile; import java.io.File; import java.io.FileFilter; import java.io.FilenameFilter; import java.util.ArrayList; /** * Created by Stardust on 2017/1/23. */ public class ScriptFile extends File { private String mSimplifyPath; private String mSimplifiedName; public ScriptFile(String path) { super(path); init(); } private void init() { mSimplifiedName = PFile.getNameWithoutExtension(getName()); mSimplifyPath = getPath(); if (mSimplifyPath.startsWith(Environment.getExternalStorageDirectory().getPath())) { mSimplifyPath = mSimplifyPath.substring(Environment.getExternalStorageDirectory().getPath().length()); } } public ScriptFile(ScriptFile parent, String child) { super(parent, child); init(); } public boolean renameTo(String newName) { if (isDirectory()) return renameTo(new File(getParent(), newName)); else return renameTo(new File(getParent(), newName + getExtension())); } private String getExtension() { return PFile.getExtension(getName()); } public String getSimplifiedPath() { return mSimplifyPath; } @Override public ScriptFile getParentFile() { String p = this.getParent(); if (p == null) return null; return new ScriptFile(p); } @Override public ScriptFile[] listFiles() { return listFiles(new FileFilter() { @Override public boolean accept(File file) { return (file.isDirectory() || file.getName().endsWith(".js")) && !file.getName().startsWith("."); } }); } @Override public ScriptFile[] listFiles(FilenameFilter filter) { String ss[] = list(); if (ss == null) return null; ArrayList<ScriptFile> files = new ArrayList<>(); for (String s : ss) if ((filter == null) || filter.accept(this, s)) files.add(new ScriptFile(this, s)); return files.toArray(new ScriptFile[files.size()]); } @Override public ScriptFile[] listFiles(FileFilter filter) { String ss[] = list(); if (ss == null) return null; ArrayList<ScriptFile> files = new ArrayList<>(); for (String s : ss) { ScriptFile f = new ScriptFile(this, s); if ((filter == null) || filter.accept(f)) files.add(f); } return files.toArray(new ScriptFile[files.size()]); } public String getSimplifiedName() { return mSimplifiedName; } public boolean moveTo(ScriptFile to) { return renameTo(new File(to, getName())); } }