/** * @author : Paul Taylor * <p/> * Version @version:$Id: TestAudioTagger.java 832 2009-11-12 13:25:38Z paultaylor $ * <p/> * Jaudiotagger Copyright (C)2004,2005 * <p/> * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser * General Public License as published by the Free Software Foundation; either version 2.1 of the License, * or (at your option) any later version. * <p/> * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * <p/> * You should have received a copy of the GNU Lesser General Public License along with this library; if not, * you can get a copy from http://www.opensource.org/licenses/lgpl-license.php or write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * <p/> * Description: */ package org.jaudiotagger.test; import org.jaudiotagger.audio.AudioFileFilter; import org.jaudiotagger.audio.AudioFileIO; import java.io.File; import java.text.DateFormat; import java.util.Date; /** * Simple class that will attempt to recusively read all files within a directory, flags * errors that occur. */ public class TestAudioTagger { public static void main(final String[] args) { TestAudioTagger test = new TestAudioTagger(); if (args.length == 0) { System.err.println("usage TestAudioTagger Dirname"); System.err.println(" You must enter the root directory"); System.exit(1); } else if (args.length > 1) { System.err.println("usage TestAudioTagger Dirname"); System.err.println(" Only one parameter accepted"); System.exit(1); } File rootDir = new File(args[0]); if (!rootDir.isDirectory()) { System.err.println("usage TestAudioTagger Dirname"); System.err.println(" Directory " + args[0] + " could not be found"); System.exit(1); } Date start = new Date(); System.out.println("Started to read from:" + rootDir.getPath() + " at " + DateFormat.getTimeInstance().format(start)); test.scanSingleDir(rootDir); Date finish = new Date(); System.out.println("Started to read from:" + rootDir.getPath() + " at " + DateFormat.getTimeInstance().format(start)); System.out.println("Finished to read from:" + rootDir.getPath() + DateFormat.getTimeInstance().format(finish)); System.out.println("Attempted to read:" + count); System.out.println("Successful to read:" + (count - failed)); System.out.println("Failed to read:" + failed); } private static int count = 0; private static int failed = 0; /** * Recursive function to scan directory * * @param dir */ private void scanSingleDir(final File dir) { final File[] audioFiles = dir.listFiles(new AudioFileFilter(false)); if (audioFiles.length > 0) { for (File audioFile : audioFiles) { count++; try { AudioFileIO.read(audioFile); } catch (Throwable t) { System.err.println("Unable to read record:" + count + ":" + audioFile.getPath()); failed++; t.printStackTrace(); } } } final File[] audioFileDirs = dir.listFiles(new DirFilter()); if (audioFileDirs.length > 0) { for (File audioFileDir : audioFileDirs) { scanSingleDir(audioFileDir); } } } public final class DirFilter implements java.io.FileFilter { public DirFilter() { } /** * Determines whether or not the file is an mp3 file. If the file is * a directory, whether or not is accepted depends upon the * allowDirectories flag passed to the constructor. * * @param file the file to test * @return true if this file or directory should be accepted */ public final boolean accept(final java.io.File file) { return file.isDirectory(); } public static final String IDENT = "$Id: TestAudioTagger.java 832 2009-11-12 13:25:38Z paultaylor $"; } }