일단 너무 큰 사이즈의 배열을 (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)
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 없이 바이트 스트림으로 읽어서 스트링으로 저장하려면 어떻게 해야 될까요?




dat 어레이에 아무것도 안 넣고,
String(data)를 했네요.