title: why initialize this byte array to 1024
body: <p>I'm relatively new to Java and I'm attempting to write a simple android app.  I have a large text file with about 3500 lines in the assets folder of my applications and I need to read it into a string.  I found a good example about how to do this but I have a question about why the byte array is initialized to 1024.  Wouldn't I want to initialize it to the length of my text file?  Also, wouldn't I want to use <code>char</code>, not <code>byte</code>?  Here is the code:</p>
  
  <pre><code>private void populateArray(){
      AssetManager assetManager = getAssets();
      InputStream inputStream = null;
      try {
          inputStream = assetManager.open("3500LineTextFile.txt");
      } catch (IOException e) {
          Log.e("IOException populateArray", e.getMessage());
      }
      String s = readTextFile(inputStream);
      // Add more code here to populate array from string
  }
  
  private String readTextFile(InputStream inputStream) {
      ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
      inputStream.length
      byte buf[] = new byte[1024];
      int len;
      try {
          while ((len = inputStream.read(buf)) != -1) {
              outputStream.write(buf, 0, len);
          }
          outputStream.close();
          inputStream.close();
      } catch (IOException e) {
          Log.e("IOException readTextFile", e.getMessage());
      }
      return outputStream.toString();
  }
  </code></pre>
  
  <p>EDIT:  Based on your suggestions, I tried this approach.  Is it any better?  Thanks.</p>
  
  <pre><code>private void populateArray(){
      AssetManager assetManager = getAssets();
      InputStream inputStream = null;
      Reader iStreamReader = null;
      try {
          inputStream = assetManager.open("List.txt");
          iStreamReader = new InputStreamReader(inputStream, "UTF-8");
      } catch (IOException e) {
          Log.e("IOException populateArray", e.getMessage());
      }
      String String = readTextFile(iStreamReader);
      // more code here
  }
  
  private String readTextFile(InputStreamReader inputStreamReader) {
      StringBuilder sb = new StringBuilder();
      char buf[] = new char[2048];
      int read;
      try {
          do {
              read = inputStreamReader.read(buf, 0, buf.length);
              if (read&gt;0) {
                  sb.append(buf, 0, read);
              }
          } while (read&gt;=0);
      } catch (IOException e) {
          Log.e("IOException readTextFile", e.getMessage());
      }
      return sb.toString();
  }
  </code></pre>