Android 讀取txt文檔
<pre name="code" class="java">/***
* 将文本檔案中的内容讀成字元串
* ***/
private String getTextString(String pathandname, String code) {
String str = "";
try {
FileInputStream fis = new FileInputStream(pathandname);
int size = fis.available();
byte[] buffer = new byte[size];
fis.read(buffer);
fis.close();
str = new String(buffer, code);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}
/****
* 無法确切的判斷出文檔的編碼是gbk或者是gb2312 擷取指定文檔的編碼方式
* ***/
public static String getCode(String filepath) {
File file = new File(filepath);
System.out.println(file.exists() + "," + file.getAbsolutePath());
String code = "";
try {
FileInputStream fis = new FileInputStream(file);
BufferedInputStream in = new BufferedInputStream(fis);
in.mark(4);
byte[] first3bytes = new byte[3];
in.read(first3bytes);// 找到文檔的前三個位元組并自動判斷文檔類型。
in.reset();
if (first3bytes[0] == (byte) 0xEF && first3bytes[1] == (byte) 0xBB
&& first3bytes[2] == (byte) 0xBF) {// utf-8
code = "utf-8";
} else if (first3bytes[0] == (byte) 0xFF
&& first3bytes[1] == (byte) 0xFE) {
code = "unicode";
} else if (first3bytes[0] == (byte) 0xFE
&& first3bytes[1] == (byte) 0xFF) {
code = "utf-16be";
} else if (first3bytes[0] == (byte) 0xFF
&& first3bytes[1] == (byte) 0xFF) {
code = "utf-16le";
} else {
// 無法确切判斷出gb2312的編碼code = "GB2312";
code = "utf-8";
}
in.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return code;
}