package com.jayqqaa12.reader.engine; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; import org.androidannotations.annotations.EBean; import com.jayqqaa12.abase.model.Group; import com.jayqqaa12.abase.kit.common.*; import com.jayqqaa12.reader.model.BookFile; @EBean public class FileEngine { private static final List<String> FILE_END = Arrays.asList(new String[] { "txt", "html", "epub", "oeb", "fb2", "mobi", "rtf" }); public String mCurrentFilePath = ""; public List<Group<BookFile>> initFileList(String filePath) { Set<String> tags = new HashSet<String>(); List<Group<BookFile>> groups = new ArrayList<Group<BookFile>>(); mCurrentFilePath = filePath; File[] files = new File(filePath).listFiles(); String tag = null; if (files == null) { T.ShortToast("sd 卡不可用"); return groups; } for (File file : files) { if(file.isHidden()||!file.canRead())continue; if (file.isDirectory()) tag = "文件夹"; else tag = "可阅读的书"; if (!tags.contains(tag)) { Group<BookFile> g = new Group<BookFile>(); g.tag = tag; addData(tag, file, g); if (g.chilren.size() > 0) { groups.add(g); tags.add(tag); } } else { for (Group<BookFile> g : groups) { if (g.tag.equals(tag)) { addData(tag, file, g); } } } } return groups; } private Group<BookFile> addData(String tag, File file, Group<BookFile> g) { if (tag.equals("文件夹")) g.chilren.add(new BookFile(file.getName(), file.getPath())); else { String fileEnd = file.getName().substring(file.getName().lastIndexOf(".") + 1, file.getName().length()).toLowerCase(); if (FILE_END.contains(fileEnd)) g.chilren.add(new BookFile(file.getName(), file.getPath(), fileEnd)); } return g; } }