title: java FileNotFoundException Too many open files
body: <p>I'm trying to build an automatic backup script in Java. I'm not very good at Java though so this is proving difficult.</p>
  
  <p>Here's my code:</p>
  
  <pre><code>package javatest;
  
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.util.zip.ZipEntry;
  import java.util.zip.ZipOutputStream;
  
  public class Main {   
   public static void main(String[] args) throws Exception {
        String path = "/mnt/192.168.1.89";
        String destFile = "/home/scott/backup.zip";
  
        zip(path,destFile);
   }
  
   private static void zip(String src, String destFile) throws Exception
   {
       FileOutputStream fileWriter = new FileOutputStream(destFile);
       ZipOutputStream zip = new ZipOutputStream(fileWriter);
  
       addFolderToZip("", src, zip);
  
       zip.flush();
       zip.close();
   }
  
   private static void addFolderToZip(String path, String srcFolder, ZipOutputStream zip) throws Exception
   {
         File folder = new File(srcFolder);
  
         for (String filename : folder.list())
         {
              if (path.equals("")) {
                   addFileToZip(folder.getName(), srcFolder + "/" + filename, zip);
              } else {
                   addFileToZip(path + "/" + folder.getName(), srcFolder + "/" + filename, zip);
              }
         }
   }
  
   private static void addFileToZip(String path, String srcFile, ZipOutputStream zip) throws Exception
   {
       File folder = new File(srcFile);
  
       if (folder.isDirectory()) {
            addFolderToZip(path,srcFile,zip);
       } else {
            byte[] buf = new byte[1024];
  
            int len;
  
            FileInputStream in = new FileInputStream(srcFile);
  
            zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
  
            while((len = in.read(buf)) &gt; 0)
            {
                 zip.write(buf,0,len);
            }
       }
   }
  }
  </code></pre>
  
  <p>And here's the exception:</p>
  
  <pre><code>Exception in thread "main" java.io.FileNotFoundException: FILENAME (Too many open files)
      at java.io.FileInputStream.open(Native Method)
      at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:106)
      at java.io.FileInputStream.&lt;init&gt;(FileInputStream.java:66)
      at javatest.Main.addFileToZip(Main.java:53)
      at javatest.Main.addFolderToZip(Main.java:37)
      at javatest.Main.addFileToZip(Main.java:47)
      at javatest.Main.addFolderToZip(Main.java:37)
      at javatest.Main.addFileToZip(Main.java:47)
      at javatest.Main.addFolderToZip(Main.java:37)
      at javatest.Main.addFileToZip(Main.java:47)
      at javatest.Main.addFolderToZip(Main.java:37)
      at javatest.Main.addFileToZip(Main.java:47)
      at javatest.Main.addFolderToZip(Main.java:37)
      at javatest.Main.addFileToZip(Main.java:47)
      at javatest.Main.addFolderToZip(Main.java:37)
      at javatest.Main.addFileToZip(Main.java:47)
      at javatest.Main.addFolderToZip(Main.java:37)
      at javatest.Main.addFileToZip(Main.java:47)
      at javatest.Main.addFolderToZip(Main.java:35)
      at javatest.Main.zip(Main.java:22)
      at javatest.Main.main(Main.java:14)
  Java Result: 1
  </code></pre>