方式一
/**
以字節為單位讀取文件,常用於讀二進製文件,如圖片、聲音、影像等文件。
當然也是可以讀字符串的。
*/
/* 貌似是說網絡環境中比較複雜,每次傳過來的字符是定長的,用這種方式? */public String readString1(){ try { //FileInputStream 用於讀取諸如圖像數據之類的原始字節流。要讀取字符流,請考慮使用FileReader。 FileInputStream inStream=this.openFileInput(FILE_NAME); ByteArrayOutputStream bos = new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int length=-1; while( (length = inStream.read(buffer) != -1) { bos.write(buffer,0,length); // .write方法SDK 的解釋是Writes count bytes from the byte array buffer starting at offset index to this stream. // 當流關閉以後內容依然存在} bos.close(); inStream.close(); return bos.toString(); // 為什麼不一次性把buffer得大小取出來呢?為什麼還要寫入到bos中呢? return new(buffer,"UTF-8") 不更好麼? // return new String(bos.toByteArray(),"UTF-8"); }}方式二
// 有人說了FileReader 讀字符串更好,那麼就用FileReader吧
// 每次讀一個是不是效率有點低了? private static String readString2(){ StringBuffer str=new StringBuffer(""); File file=new File(FILE_IN); try { FileReader fr=new FileReader(file); int ch = 0; while((ch = fr.read())!=-1 ) { System.out.print((char)ch+" "); } fr.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("File reader出錯"); } return str.toString();}方式三
/按字節讀取字符串/
/* 個人感覺最好的方式,(一次讀完)讀字節就讀字節吧,讀完轉碼一次不就好了*/
private static String readString3()
{
String str="";File file=new File(FILE_IN);try { FileInputStream in=new FileInputStream(file); // size 為字串的長度,這裡一次性讀完int size=in.available(); byte[] buffer=new byte[size]; in.read(buffer); in.close(); str=new String(buffer,"GB2312");} catch (IOException e) { // TODO Auto-generated catch block return null; e.printStackTrace();}return str;}
方式四
/InputStreamReader+BufferedReader讀取字符串, InputStreamReader類是從字節流到字符流的橋樑/
/* 按行讀對於要處理的格式化數據是一種讀取的好方式*/private static String readString4(){ int len=0; StringBuffer str=new StringBuffer(""); File file=new File(FILE_IN); try { FileInputStream is=new FileInputStream(file); InputStreamReader isr= new InputStreamReader(is); BufferedReader in= new BufferedReader(isr); String line=null; while( (line=in.readLine())!=null ) { if(len != 0) // 處理換行符的問題{ str.append("/r/n"+line); } else { str.append(line); } len++; } in.close(); is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return str.toString();}路要一步一步走,記住自己走過的路,不再犯同樣的錯誤,才是真正的成長!歡迎指點、交流。
以上這篇Java中讀取文件轉換為字符串的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。