일단 너무 큰 사이즈의 배열을 (byte[] 형)  String으로 변환 하려고 했더니 에러가 나는 것 같네요,,


로그캣 내용은 다음과 같습니다.


--------------------------------------------------

04-17 22:21:38.773: W/dalvikvm(4963): threadid=1: thread exiting with uncaught exception (group=0x40a4d1f8)

04-17 22:21:38.781: E/AndroidRuntime(4963): FATAL EXCEPTION: main

04-17 22:21:38.781: E/AndroidRuntime(4963): java.lang.OutOfMemoryError

04-17 22:21:38.781: E/AndroidRuntime(4963): at java.nio.CharBuffer.put(CharBuffer.java:509)

04-17 22:21:38.781: E/AndroidRuntime(4963): at java.nio.charset.CharsetDecoder.allocateMore(CharsetDecoder.java:238)

04-17 22:21:38.781: E/AndroidRuntime(4963): at java.nio.charset.CharsetDecoder.decode(CharsetDecoder.java:195)

04-17 22:21:38.781: E/AndroidRuntime(4963): at java.nio.charset.Charset.decode(Charset.java:487)

04-17 22:21:38.781: E/AndroidRuntime(4963): at java.lang.String.<init>(String.java:174)

04-17 22:21:38.781: E/AndroidRuntime(4963): at java.lang.String.<init>(String.java:141)

04-17 22:21:38.781: E/AndroidRuntime(4963): at exam.militarymgrs.Draw_LOS.readFile(Draw_LOS.java:182)

-----------------------------------------------------

Draw_LOS의 182행은 다음과 같구요,,,
(String s = new String(dat);)


-------소스--------------

public static ArrayList<String> readFile(String fileName) {


//map data access

String sdPath;

sdPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/";

File file = new File(sdPath+fileName);

//String[] k = new String[1440000];

      //String line = "";

      ArrayList<String> data = new ArrayList<String>();//consider using ArrayList<int>

      try {


       FileInputStream fis = new FileInputStream(file);

       byte[] dat = new byte[fis.available()];

       String s = new String(dat);

       String[] k = s.split("[\\r\\n]+");

       

       while(fis.read(dat) != -1) {;}

       fis.close();

       

      // ArrayList<String> data = new ArrayList<String>(k.length);

      for (int i = 0, n = k.length; i < n; ++i) {

         data.add(k[i].trim());

         }     

      }

      catch(FileNotFoundException fN) {

       fN.printStackTrace();

      }

      catch(IOException e) {

       System.out.println(e);

      }


  return data;

}



------------------

읽어들이려는 파일 자체가 1,440,000행으로 된 고도 정보가 기록된 파일입니다.


12

32

43

...


이런식으로요,,


Out of Memory 없이 바이트 스트림으로 읽어서 스트링으로 저장하려면 어떻게 해야 될까요?