package BlockingQueueTest;
import java.io.File;
import java.util.concurrent.BlockingQueue;
public class FileEnumerationTask implements Runnable
{
/**
* Constructor FileEnumarationTask
* @param queue Coada blocata, incare sunt inserate fisierele
* @param startingDirectory Catalogul, din care se incepe numerotarea
*/
public FileEnumerationTask(BlockingQueue<File> queue,File startingDirectory)
{
this.queue = queue;
this.startingDirectory = startingDirectory;
}
@Override
public void run()
{
// TODO Auto-generated method stub
try
{
enumerate(startingDirectory);
queue.put(FICTIV);
}
catch (InterruptedException e) {}
}
/**
* Recursiv numeroteaza toate fisierele din catalog si din subcataoage
* @param directory Catalogul initial
*/
public void enumerate(File directory)
throws InterruptedException
{
File[] files = directory.listFiles();
for(File file: files)
{
if(file.isDirectory())
{
enumerate(file);
}
else
{
queue.put(file);
}
}
}
public static File FICTIV = new File("");
private BlockingQueue<File> queue;
private File startingDirectory;
}