I've decided to write a recursive program that writes all the files in my C drive into a .txt file, however it is very slow.
I've read online that recursion is slow, but i can't think of any other way. Is there any way i can optimize this ?
EDIT : changed the deepInspect method to use a Stack instead of recursion, which slightly improved performance. 
Here is the code
public class FileCount {
static long fCount = 0;
public static void main(String[] args) {
    System.out.println("Start....");
    long start = System.currentTimeMillis();
    File cDir = new File("C:\\");
    inspect(cDir);
    System.out.println("Operation took : " + (System.currentTimeMillis() - start) + " ms");
}
private static void inspect(File cDir) {
    for (File f : cDir.listFiles()) {
        deepInspect(f);
    }
}
private static void deepInspect(File f) {
    Stack<File> stack = new Stack<File>();
    stack.push(f);
    while (!stack.isEmpty()) {
        File current = stack.pop();
        if (current.listFiles() != null) {
            for (File file : current.listFiles()) {
                stack.push(file);
            }
        }
        writeData(current.getAbsolutePath());
    }
}
static FileWriter writer = null;
private static void writeData(String absolutePath) {
    if (writer == null)
        try {
            writer = new FileWriter("C:\\Collected\\data.txt");
        } catch (IOException e) {}
    try {
        writer.write(absolutePath);
        writer.write("\r\n");//nwline
        writer.write("Files : " + fCount);
        writer.write("\r\n");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}
 
     
    