title: Java: InputStream too slow to read huge files
body: <p>I have to read a 53 MB file character by character. When I do it in C++ using ifstream, it is completed in milliseconds but using Java InputStream it takes several minutes. Is it normal for Java to be this slow or am I missing something?</p>
  
  <p>Also, I need to complete the program in Java (it uses servlets from which I have to call the functions which process these characters). I was thinking maybe writing the file processing part in C or C++ and then using Java Native Interface to interface these functions with my Java programs... How is this idea?</p>
  
  <p>Can anyone give me any other tip... I seriously need to read the file faster.  I tried using buffered input, but still it is not giving performance even close to C++. </p>
  
  <p>Edited: My code spans several files and it is very dirty so I am giving the synopsis</p>
  
  <pre><code>import java.io.*;
  
  public class tmp {
      public static void main(String args[]) {
          try{
          InputStream file = new BufferedInputStream(new FileInputStream("1.2.fasta"));
          char ch;        
          while(file.available()!=0) {
              ch = (char)file.read();
                      /* Do processing */
              }
          System.out.println("DONE");
          file.close();
          }catch(Exception e){}
      }
  }
  </code></pre>