FileFunction.java
1 2 3 4 | public interface FileFunction { public void read(String line); } |
M3UParserFileFunction.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class M3UParserFileFunction implements FileFunction { private List<File> mp3Files; private File m3uFile; public M3UParserFileFunction(File m3uFile, List<File> mp3Files) { this .mp3Files = mp3Files; this .m3uFile = m3uFile; } @Override public void read(String line) { if (!line.trim().startsWith( "#" )) { if (line.trim().toLowerCase().endsWith( ".mp3" )) { // Try relative path first, then absolute path. File file = new File(m3uFile.getParentFile(), line.trim()); if (file.exists()) { mp3Files.add(file); } else if (!file.exists()) { // Use absolute path file = new File(line.trim()); if (file.exists()) { mp3Files.add(file); } } } } } } |
FileUtils.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class FileUtils { private FileUtils() { } public static void eachLine(File file, FileFunction fileFunction) throws IOException { BufferedReader br = null ; try { br = new BufferedReader( new FileReader(file)); String line = "" ; while ((line = br.readLine()) != null ) { fileFunction.read(line); } } finally { if (br != null ) { br.close(); } } } } |
1 2 3 | List<File> files = new ArrayList<File>(); FileUtils.eachLine(m3uFile, new M3UParserFileFunction(m3uFile, files)); for (File file : files) { doWhatever(file); } |
No comments:
Post a Comment