package com.baidu.ueditor.hunter; import java.io.File; import java.util.Arrays; import java.util.Collection; import java.util.Map; import org.apache.commons.io.FileUtils; import com.baidu.ueditor.PathFormat; import com.baidu.ueditor.define.AppInfo; import com.baidu.ueditor.define.BaseState; import com.baidu.ueditor.define.MultiState; import com.baidu.ueditor.define.State; public class FileManager { private String dir = null; private String rootPath = null; private String[] allowFiles = null; private int count = 0; public FileManager ( Map<String, Object> conf ) { this.rootPath = (String)conf.get( "rootPath" ); this.dir = this.rootPath + (String)conf.get( "dir" ); this.allowFiles = this.getAllowFiles( conf.get("allowFiles") ); this.count = (Integer)conf.get( "count" ); } public State listFile ( int index ) { File dir = new File( this.dir ); State state = null; if ( !dir.exists() ) { return new BaseState( false, AppInfo.NOT_EXIST ); } if ( !dir.isDirectory() ) { return new BaseState( false, AppInfo.NOT_DIRECTORY ); } Collection<File> list = FileUtils.listFiles( dir, this.allowFiles, true ); if ( index < 0 || index > list.size() ) { state = new MultiState( true ); } else { Object[] fileList = Arrays.copyOfRange( list.toArray(), index, index + this.count ); state = this.getState( fileList ); } state.putInfo( "start", index ); state.putInfo( "total", list.size() ); return state; } private State getState ( Object[] files ) { MultiState state = new MultiState( true ); BaseState fileState = null; File file = null; for ( Object obj : files ) { if ( obj == null ) { break; } file = (File)obj; fileState = new BaseState( true ); fileState.putInfo( "url", PathFormat.format( this.getPath( file ) ) ); state.addState( fileState ); } return state; } private String getPath ( File file ) { String path = file.getAbsolutePath(); boolean windows=System.getProperties().get("os.name").toString().toLowerCase().startsWith("win"); String temp_root=this.rootPath; if (windows) { temp_root=temp_root.replace("/", "\\"); } /* System.out.println(path); System.out.println(temp_root); System.out.println("-----------------------------------------------");*/ return path.replace( temp_root, "/" ); } private String[] getAllowFiles ( Object fileExt ) { String[] exts = null; String ext = null; if ( fileExt == null ) { return new String[ 0 ]; } exts = (String[])fileExt; for ( int i = 0, len = exts.length; i < len; i++ ) { ext = exts[ i ]; exts[ i ] = ext.replace( ".", "" ); } return exts; } }